मैंने अपनी आखिरी प्रतिबद्धता खो दी क्योंकि मैंने गलती से "गिट रीसेट - हार्ड हेड ^" चलाया। नोट: मैं अंत में "^" नहीं रखना चाहता था।खोया अंतिम गिट कमिट
क्या इसे वापस पाने का कोई तरीका है? यह काम :(
मैंने अपनी आखिरी प्रतिबद्धता खो दी क्योंकि मैंने गलती से "गिट रीसेट - हार्ड हेड ^" चलाया। नोट: मैं अंत में "^" नहीं रखना चाहता था।खोया अंतिम गिट कमिट
क्या इसे वापस पाने का कोई तरीका है? यह काम :(
मुझे लगता है कि this article आप के लिए क्या देख रहे लेख के अनुसार यह है कि, आपके लिए प्रतिबद्ध है "चला गया है," लेकिन नहीं कचरा एकत्र - तरह की Windows में रीसायकल बिन तरह
आप git fsck --lost-found
चलाते हैं। 'लटकना प्रतिबद्ध' ढूंढने के लिए, और git reflog
के साथ इसे देखें, फिर अपनी वर्तमान शाखा, git merge 7c61179
के साथ लटकती प्रतिबद्धता को मर्ज करें।
धन्यवाद। उसने ऐसा किया मुझे पता था कि यह सिर्फ कुछ जगह पर तैर रहा था, शाखा से अनलिंक था। –
difftool के साथ संयोजन में, मैंने अपनी "खोई गई प्रतिबद्धता" समस्या हल की है: गिट एफएसके - लोस्ट-मिला (लैंडिंग प्रतिबद्ध हैंश प्रदर्शित होते हैं) गिट difftool SOME_HASH कुछ फ़ोल्डर्स/(मैंने सभी खतरनाक कामों की कोशिश की है, जब तक कि मैं 'एक आवश्यक पाया गया है) –
के 2 दिन था क्या आप जानते प्रतिबद्ध आईडी (अपने टर्मिनल पर वापस स्क्रॉल करें या git reflog
का उपयोग जैसे), तो
git reset --hard 61567de5d9
कहाँ 61567de5d9 नवीनतम के पहले अंक हैं (खो) के लिए प्रतिबद्ध ।।
गिट एक पूर्व राज्य में वापस जाना वास्तव में आसान बनाता है और आपके द्वारा किए गए किसी भी डेटा को खोने से रोकने के लिए बहुत मेहनत करता है। यही कारण है कि आपको अक्सर प्रतिबद्ध करना चाहिए। मुझे git trash
कमांड मिला है जो git reset --hard
स्थिति करता है, लेकिन एक प्रतिबद्धता लिखने के बाद ताकि मुझे हार्ड रीसेट को पूर्ववत कर दिया जा सके।
हाल के राज्य (यानी आपका सटीक मामला) के लिए, बस आपने जो किया है उसे पूर्ववत करने के लिए git reset --hard ORIG_HEAD
करें।
आप एक समय के आधार पर कर सकते हैं रीसेट: git reset --hard '@{5 minutes ago}'
खुद एक पूर्व समय के आधार पर राज्य में डालने के लिए (वहाँ आप उदाहरण के लिए, का उपयोग कर सकते बहुत सारे विकल्प, git reset --hard '@{yesterday}'
नाटक करने के लिए आज कभी नहीं हुआ हैं)।
अन्यथा, git reflog
आउटपुट को उस स्थिति से पहले ढूंढने के लिए ब्राउज़ करें जिसे आप खराब स्थिति में डालते हैं और उस पर रीसेट करें।
अधिक सामान्य आप 'ORIG_HEAD' के बजाय' @ {1} ', या' HEAD @ {1} 'का उपयोग कर सकते हैं। –
किसी भी मामले में, गिट जीसी का उपयोग न करें। इससे अनलिंक किए गए कामों को स्थायी रूप से हटा दिया जाएगा। – Tronic
नहीं, जीसी उस प्रतिबद्धता को तब तक नहीं खोएगा जब तक कि आप अपने काम से बाहर निकलने के लिए गिट के लिए आसान नहीं बनाते (अक्षम या आक्रामक रूप से छंटनी)। कोई भी जिसने अपने हालिया प्रतिबद्धता को खोने के लिए गिट को कॉन्फ़िगर करने के बारे में जानने के लिए पर्याप्त समय बिताया है, कम से कम इस सवाल से नहीं पूछना होगा। डिफ़ॉल्ट रूप से – Dustin
'git gc' अनलिंक किए गए कामों (डिफ़ॉल्ट रूप से) के मामले में 30 दिनों तक रीफ्लॉग में अनलिंक किए गए कामों को नहीं हटाता है। –