सभी परिवर्तनों को त्यागने की विधि:
मुझे यह सवाल मर्ज करने के बाद मिला और चेकआउट को भूलकर तुरंत बाद में विकसित होना पड़ा । आपने यह अनुमान लगाया: मैंने सीधे मास्टर पर कुछ फाइलों को संशोधित करना शुरू किया । डी 'ओह! जैसा कि मेरी स्थिति शायद ही अनूठी है (हमने यह सब किया है, हम नहीं; ->), मैं एक ऐसा उलटा तरीका पेश करूँगा कि मैं मास्टर की तरह फिर से विकसित होने के लिए सभी बदलावों को छोड़ दूंगा ।
यह git diff
देखने के लिए कि फ़ाइलों को संशोधित करने और मेरी त्रुटि के दायरे का आकलन करने के बाद, मैंने निष्पादित किया:
git stash
git stash clear
पहले सभी परिवर्तनों को टालने के बाद, उन्हें अगली मंजूरी दे दी गई। मास्टर को त्रुटि में फ़ाइलों में किए गए सभी परिवर्तन चले गए थे और समता बहाल हो गई थी।
मान लीजिए कि मैं अब उन परिवर्तनों को पुनर्स्थापित करना चाहता था। मे यह कर सकती हु। पहला कदम है कि मैं सिर्फ साफ / गिराया गया हैश का हैश ढूंढता हूं:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
हैश सीखने के बाद, मैंने सफलतापूर्वक इसके साथ असम्बद्ध परिवर्तनों को पुनर्स्थापित किया:
git stash apply hash-of-cleared-stash
मैं वास्तव में उन परिवर्तनों को बहाल नहीं करना चाहता था, बस मैं उन्हें वापस पाने के लिए मान्य करना चाहता था, इसलिए मैंने उन्हें फिर से मंजूरी दे दी।
एक अन्य विकल्प यह है कि परिवर्तनों को पोंछने के बजाय, एक अलग शाखा में स्टेश को लागू किया जाए । तो गलत शाखा पर काम करने से हुए परिवर्तनों को साफ करने के मामले में, stash
आपको अपने बू-बू से उबरने के लिए बहुत अधिक लचीलापन देता है।
किसी भी तरह, यदि आप एक शाखा में परिवर्तन को साफ़ करने का प्रतिवर्ती साधन चाहते हैं, तो पूर्वगामी इस उपयोग के मामले में कम खतरनाक तरीका है।
git reset --hard HEAD^