Git: "(कोई शाखा नहीं)" में लग रहा था और फिर मेरे परिवर्तन खो दिए


11

मैं अपने Git कार्यक्षेत्र से Github तक धकेलने की कोशिश कर रहा था, लेकिन मेरे जोड़े और प्रतिबद्ध परिवर्तनों को अपलोड नहीं किया गया।

फिर, "गिट शाखा" करने से मुझे कुछ ऐसा मिला जो इस तरह दिखता था:

git branch
* (no branch)
  master

मूर्खतापूर्ण, मैंने सोचा कि मैं मास्टर के साथ वापस आ सकता हूं

git checkout master

और अब मेरे बदलाव चले गए हैं। मेरी मास्टर ब्रांच लगभग एक दिन पुरानी है। और इस (कोई शाखा) में वापस स्विच करने का कोई तरीका नहीं लगता है।

क्या मेरे परिवर्तन खो गए हैं? या फिर उन्हें ठीक करने का कोई तरीका है?

जवाबों:


13

जब तक आपने ए नहीं किया है git gc, तब तक आपने कुछ भी नहीं खोया है। आपको बस इसे फिर से खोजने की ज़रूरत है :) आपको इसके साथ क्या मिलेगा:

git reflog show

यह आपको दिखाना चाहिए कि क्या हुआ था, और लापता नोड (ओं) की आईडी।


2
मैं गुरु को निर्दिष्ट किए बिना परिशोधन करना चाहूंगा। यह संभव है कि ऐसे अपराध हों जो किसी शाखा से बंधे हुए न हों और इस मामले में, ऐसा होने की संभावना है। आप एक नई शाखा में एक जांच कर सकते हैं, इसलिए इसका एक रास्ता है।
जेफ फेरलैंड

आप सही हैं, शायद इस तरह से बेहतर हैं। सवाल से मेरी धारणा यह थी कि यह प्रतिबद्ध के लिए मास्टर पर था। मैंने अपना उत्तर अपडेट कर दिया है।
सी.के.

वाह, धन्यवाद! मैंने बिना किसी शाखा के एक बहुत बड़ा संघर्ष किया, फिर इसे विलय करने के लिए मास्टर में बदल दिया ... और मेरा संदर्भ गया।
पास्कल

काफी साल हो गए, लेकिन मैं भी इसमें कूद गया। मैं वापस मास्टर शाखा में चला गया, और अचानक, पूफ। मेरे सभी 2 दिन के काम (यानी, 8 घंटे एडे) चले गए। आपको बहुत - बहुत धन्यवाद!
फाल्टगिल सेप

5

उपरोक्त उत्तर सही है। यह जो मैंने किया है:

$ git reflog
5b35f6d HEAD@{1}: pull github master: Fast forward
ca92d15 HEAD@{2}: checkout: moving from 759dab1b15731ce7680c26839ca470d20e709e36 to master
759dab1 HEAD@{3}: commit (merge): Merge branch 'master' of github.com:gonzojive/IODB-ui into HEAD
065e269 HEAD@{4}: commit: added fieldsets to snazzy form
f357606 HEAD@{5}: commit: preliminary support for google maps.
ca92d15 HEAD@{6}: checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

$ git checkout ca92d15d272867b63d54f96d4aa57f8ecc479cd0

"ओह नहीं!" पल यह है:

checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

ca92d15d272867b63d54f96d4aa57f8ecc479cd0 अनाम शाखा है जो (कोई शाखा) के रूप में दिखाई देती है। इसे वापस लाने के लिए, बस एक git checkout करें और आपका पुराना pseudobranch पुनर्स्थापित किया जाए।

इससे पहले कि मैं मन की शांति के लिए गलती से इसे जीसी रिपॉजिटरी में डाल दूं।


बस शाखा की जाँच मेरे लिए काम नहीं किया। मेरे परिवर्तन मेरी सुविधा शाखा में सही ढंग से किए गए थे। फिर भी मैं उन्हें अपने कार्यक्षेत्र में नहीं देख सका। मैंने अपने परिवर्तनों को किसी अन्य तरीके से खो दिया होगा। हालाँकि, मैं अपने परिवर्तनों को निष्पादित करके पुनः प्राप्त कर सकता था git reset --hard <commit-id>। पहला आईडी में अल्फा न्यूमेरिक कोड है git reflog। देखें effectif.com/git/recovering-lost-git-commits
टॉरस्टेन

2
# if you have already checked out to master, 
# you won't know the commit-ish of your "no branch":

git fsck --lost-found # (to find your <commit-ish>)
git merge <commit-ish>

# if you are still on your "no branch" commit:

git log # (the commit-ish will be on the first line)
git checkout master
git merge <commit-ish>

# or

git log | head -n 1 | cut -d ' ' -f 2 | pbcopy
git checkout master
git merge <commit-ish>

रि-लिस्ट सहित कई तरीकों में से, केवल fsck ने शाखा-कम प्रतिबद्ध खोजने में मदद की। आपका बहुत बहुत धन्यवाद।
temoto
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.