2012-04-19 25 views
171

पर कार्यशील प्रतिलिपि स्विच करें के बाद किए गए सभी कामों को खोए बिना विशिष्ट गिट प्रतिबद्ध पर स्विच कैसे करें?अस्थायी रूप से एक विशिष्ट गिट प्रतिबद्ध

मैं चाहता हूं कि स्थानीय फाइलें बदली जाएंगी, लेकिन 'डेटाबेस चालू रहेगा, यह बरकरार रहेगा, केवल वर्तमान स्थिति सूचक वर्तमान में चयनित प्रतिबद्धता पर सेट है।

मैं फाइलों की स्थिति को विशिष्ट प्रतिबद्धता, परियोजना चलाने के लिए बदलना चाहता हूं, और समाप्त होने पर, फ़ाइलों को अंतिम प्रतिबद्धता में वापस बहाल करना चाहता हूं।

पूरे प्रोजेक्ट के फ़ोल्डर को ज़िप किए बिना ऐसा कैसे करें?

+0

संबंधित: [पिछले गिट प्रतिबद्धता पर वापस लौटें] (http://stackoverflow.com/q/4114095/456814)। –

उत्तर

251

यदि आप एक निश्चित शाखा mybranch पर हैं, तो बस आगे बढ़ें और git checkout commit_hash पर जाएं। फिर आप git checkout mybranch द्वारा अपनी शाखा में वापस आ सकते हैं। मेरे पास आज भी एक बग का पता लगाने वाला एक ही गेम था :) इसके अलावा, आपको git bisect के बारे में पता होना चाहिए।

+1

मैंने देखा कि - यह वही काम कर रहा है जो मैं चाहता हूं, और कोई काम नहीं खो जाता है। – Paul

+6

ध्यान दें कि यदि आप एक स्वच्छ भंडार पर हैं और शाखाकरण करने की आवश्यकता नहीं है तो आप केवल 'गिट चेकआउट प्रतिबद्ध_शैश' कर सकते हैं। कुछ उपयोग मामलों (जैसे मेरा) के लिए आसान हो सकता है। – enderland

+0

@ निडरलैंड: आपका सिर हमेशा सामान्य रूप से कुछ शाखाओं पर इंगित करता है :) –

39

सबसे पहले, लॉग देखने के लिए git log का उपयोग करें, अपनी इच्छित प्रतिबद्धता चुनें, sha1 हैश को नोट करें जिसका प्रयोग प्रतिबद्धता की पहचान के लिए किया जाता है। अगला, git checkout hash चलाएं। आपके काम के बाद, git checkout original_branch। इसका सिर हेड नहीं ले जाने का लाभ है, यह बस कार्यशील प्रति को एक विशिष्ट प्रतिबद्धता में बदल देता है।

+4

मुझे लगता है कि आपका मतलब है 'गिट चेकआउट '। 'गिट चेकआउट हेड' प्रभावी रूप से एक एनओयूपी –

+0

है मैंने देखा है कि रीसेट - हार्ड ठीक वही काम कर रहा है जो मैं चाहता हूं, और कोई काम नहीं खो जाता है। – Paul

+3

'गिट रीसेट --हार्ड 'वर्तमान शाखा के सिर को बदलता है, जबकि' गिट चेकआउट 'के साथ आपको एक अलग चेकआउट मिलता है जो किसी भी शाखा को नहीं बदलता है, और आप आसानी से अपनी शाखा की मूल हैश आईडी जानने के बिना वापस आ सकते हैं जैसा कि इस उत्तर में दिखाया गया है। – jofel