मैं इस समस्या को कैसे हल करता हूं? git fsck
और लॉगिंग का प्रयोग करें!
पहले खोए गए (पहुंचने योग्य) काम और ब्लब्स वाली फ़ाइल बनाएं। (ध्यान दें: यदि आपने git gc
जैसे कुछ किया है तो यह कचरा इकट्ठा करेगा जो वे करते हैं और आप उन्हें यहां नहीं पाएंगे!)
$git fsck --lost-found > lost_found.commits
है कि आप इस तरह की एक फ़ाइल देता है:
झूलते प्रतिबद्ध dec2c5e72a81ef06963397a49c4b068540fc0dc3
झूलते ब्लॉब f8c2579e6cbfe022f08345fa7553feb08d60a975
झूलते ब्लॉब 0eb3e86dc112332ceadf9bc826c49bd371acc194
झूलते ब्लॉब 11cbd8eba79e01f4fd7f496b1750953146a09502
झूलते प्रतिबद्ध 18733e44097d2c7a800650cea442febc5344f9b3
झूलते ब्लॉब 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
आप फिर वहाँ से प्रतिबद्ध/ब्लॉग हैश कॉपी करने के लिए पसंदीदा पाठ संपादक आपसे यह फ़ाइल खोल सकते हैं। (* खांसी * vim मैक्रो इस के लिए अच्छा काम करता है * खांसी *)
अब आप इस से फिर से लॉग इन git log --oneline <commit hash>
की तरह कुछ के साथ प्रतिबद्ध कर सकते हैं। वैकल्पिक रूप से, gitk, tig, या किसी अन्य गिट दर्शक को काम करना चाहिए।
आपके मामले में अगर आप प्रतिबद्ध एफ के लिए लॉग आप कुछ इस तरह दिखाई देगा हैश मिल जाए,
A---B---E---F
त्वरित और आसान! अब आप उन सभी खतरनाक कामों के पीछे संदर्भ पा सकते हैं।
पीएस हाँ, मुझे पता है, देर से पोस्ट, लेकिन ओह ठीक है, किसी को इसे यहां मिल सकता है और इसे उपयोगी लगता है। (अधिकतर 6 महीनों में होने की संभावना मुझे जब मैं फिर से इस गूगल)
+1: 'प्रतिबद्ध - आदेश' या 'रीबेज 'द्वारा जानबूझकर अनाथाश्रम किए गए प्रतिबद्धता के बीच बिल्कुल अंतर नहीं है और एक अलग-अलग सिर के साथ काम करके गलती से अनाथ हो गया है। वास्तव में – Cascabel
। शायद उस स्थिति से ठीक होने का सबसे आसान तरीका हेड के लिए खुद को रिफ्लॉग देखना होगा। – araqnid
धन्यवाद, यह मदद करता है। यहां तक कि झिलमिलाहट जवाब भी :) +1 – Amadan