2012-02-17 10 views
17

मैंने अपनी शाखा में जो कुछ सोचा था उस पर मैंने कई दर्जनों काम किए, फिर एक और शाखा की जांच की।गिट/अलग सिर, काम वापस पाने के लिए?

मेरी प्रारंभिक शाखा में वापस जाने के लिए तैयार होने पर, मुझे अपना अपडेटेड कोड नहीं मिला। कंसोल में अपने इतिहास को देखने के बाद, मुझे समझ में आया कि मैंने एक अलग शाखा में काम किया है ...

क्या यह अलग-अलग शाखा में मैंने जो काम किया है, उसे प्राप्त करना संभव है?

उत्तर

23

हां। आप रीफ्लॉग का उपयोग कर सकते हैं। git log -g HEAD आज़माएं। यह आपको HEAD के लिए रीफ्लॉग दिखाएगा, यानी प्रत्येक वचन जो HEAD ने इंगित किया है, और यही कारण है कि यह उस प्रतिबद्धता में बदल गया। आपको शाखा को चेक करने वाले अपने आदेश को ढूंढने में सक्षम होना चाहिए, और देखें कि पिछली प्रतिबद्धता क्या थी।

आप रेफ्लॉग में इंडेक्स के लिए अन्य वाक्यविन्यास का भी उपयोग कर सकते हैं। यदि आपने अभी git checkout branch किया है, तो [email protected]{1} पिछली चेक-आउट प्रतिबद्धता का संदर्भ देगा (ताकि आप इसे वापस पाने के लिए git checkout [email protected]{1} कर सकें)। या यदि आप जानते हैं कि 10 मिनट पहले HEAD सही चीज़ पर इशारा कर रहा था, तो आप git checkout [email protected]{10.minutes.ago} का उपयोग कर सकते हैं।

+2

धन्यवाद बहुत कुछ, आपने अभी 4 घंटे के काम को बचाया है .... – apneadiving

+0

@ स्नैपिंग: कुछ भी जो आपने वास्तव में गिट करने के लिए प्रतिबद्ध किया है उसे बाद में पुनर्प्राप्त किया जा सकता है। एक अनिर्धारित प्रतिबद्ध वस्तु वास्तव में कचरा इकट्ठा करने से पहले लगभग 1.5 महीने लगती है (1 महीने रिफ्लॉग से बाहर निकलने के लिए, और हटाए जाने से पहले 2 सप्ताह)। सबसे खराब मामला आप इन वस्तुओं को 'git fsck --lost-found' के साथ पा सकते हैं। –

+0

ठीक है इन विवरणों के लिए फिर से धन्यवाद। – apneadiving

9

आराम से, सब कुछ अभी भी वहाँ :) है

बस

git reflog 

और git फोन क्या करता HEAD से पहले बताया करने के लिए आपको बता देंगे।

checkout: moving from c70e36e25ac2dbedde6cb376719381fe0ab53f19 to master 

जैसी एक पंक्ति होगी जो आपको एक अलग सिर के साथ आपके काम की नोक के SHA1 बताती है। कि टिप

git branch saved-commits c70e36e25ac2dbedde6cb376719381fe0ab53f19 

का उपयोग कर अब तुम उस शाखा शाखा के शीर्ष पर प्रतिबद्ध करने के लिए जाने चाहिए थे rebase कर सकते हैं करने के लिए एक नई शाखा की ओर इशारा करते बनाएँ।

+0

पूरक उत्तर देने के लिए बहुत बहुत मूल्यवान, आपको बहुत बहुत धन्यवाद। – apneadiving

संबंधित मुद्दे