2012-01-27 12 views
17

मैंने अपडेट के साथ एक और शाखा की जांच की, फिर कुछ बदलाव किए, मुख्य गिट पर वापस स्विच किया और अब परिवर्तन गायब हो गए! क्या मैं उन्हें वापस ले सकता हूं? टर्मिनल मूल रूप से किया गया था:'अलग सिर राज्य' से प्रतिबद्धता कैसे प्राप्त करें?

$ git commit 
[detached HEAD 7c09e17] Fixed some stuff 
    files changed, insertions(+), deletions(-) 
$ git push master 
fatal: 'master' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 
$ git checkout master 
Previous HEAD position was 7c09e17... Fixed some stuff 
Switched to branch 'master' 
$ git merge theother/directory 
+0

http://stackoverflow.com/questions/4845505/gitx-how-do-i-get-my-detached-head-commits-back-into-master का डुप्लिकेट? – smparkes

उत्तर

30

मान लिया जाये कि आप गुरु पर अभी भी कर रहे हैं:

git merge 7c09e17 

पर्याप्त होना चाहिए। यदि आप टर्मिनल देखते हैं तो git आमतौर पर आपको प्रतिबद्ध आईडी बताए जाने के बारे में अच्छा है।

+0

चेकआउट मास्टर, गिट विलय 7c09e17, गिट चेकआउट मास्टर, गिट पुश, इसे हल करने लगता है, धन्यवाद! – NoBugs

+0

और, जिज्ञासा से बाहर, क्या मेरी स्थानीय मशीन पर इन सभी कामों को देखने/रद्द करने का कोई तरीका है? – NoBugs

+8

@NoBugs, यदि आप सभी लटकती प्रतिबद्धताओं को देखना चाहते हैं (शाखा पर नहीं है), मुझे लगता है कि आप 'git fsck --unreachable --no-reflogs' चाहते हैं। –

7

मेरे पास समान समस्या थी। मुझे लाइफ सेवर होने के लिए git reflog मिला। मामले में यह वर्णन इसका इस्तेमाल में मदद करता है, यहाँ उत्पादन है:

e3191c5 [email protected]{0}: checkout: moving from ec31ccf0735240d0cdc5a44fd443039c3caa43f0 to master 
ec31ccf [email protected]{1}: commit: Added code and data for simulation. 
781b9ee [email protected]{2}: checkout: moving from 3bd804e635b913840c71b7f8a33665460580d45f to 781b 
3bd804e [email protected]{3}: checkout: moving from master to 3bd804 

मेरे स्थिति एक सा है कि में अलग था मैं, जबकि एक अलग प्रमुख राज्य में एक बहुत पुरानी से शुरू करने की एक प्रतिबद्ध बना दिया था।

अगर मैं बस ec31ccf0735240d0cdc5a44fd443039c3caa43f0 विलय करने के लिए चाहता था master में (उर्फ ec31ccf है, जो मैं कहाँ किया गया था), मैं git merge ec31ccf लगता है या git rebase ec31ccf काम किया है हो सकता है। लेकिन यह ज्यादातर मेरे मामले में प्राचीन इतिहास विलय कर रहा है (संघर्ष विवाद, इत्यादि के साथ)।

इसके बजाय, मैं बस ec31ccf पर किए गए कार्यों को पुनर्प्राप्त करना चाहता था, और git cherry-pick ec31ccf अच्छी तरह से काम किया।

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