यदि आप नहीं जानते कि यह कैसे काम करता है, तो कमिट करना थोड़ा डरावना है। लेकिन यह वास्तव में आश्चर्यजनक रूप से आसान है यदि आप समझते हैं।
मान लें कि आपके पास यह है, जहां C आपकी HEAD है और (F) आपकी फाइलों की स्थिति है।
(F)
A-B-C
↑
master
आप सी को कमिट करना चाहते हैं और इसे फिर कभी न देखें और स्थानीय रूप से संशोधित फाइलों में सभी बदलावों को खो दें । तुम इसे करो:
git reset --hard HEAD~1
परिणाम है:
(F)
A-B
↑
master
अब B HEAD है। क्योंकि आपने उपयोग किया था --hard
, आपकी फ़ाइलें कमिट B पर उनके राज्य में रीसेट हो गई हैं।
आह, लेकिन मान लें कि सी एक आपदा नहीं थी, लेकिन बस थोड़ी दूर थी। आप कमिट को पूर्ववत् करना चाहते हैं लेकिन बेहतर कमिट करने से पहले अपने बदलावों को थोड़े से संपादन के लिए रखें। यहाँ से फिर से शुरू, सी के रूप में अपने सिर के साथ:
(F)
A-B-C
↑
master
आप ऐसा कर सकते हैं --hard
:
git reset HEAD~1
इस मामले में परिणाम है:
(F)
A-B-C
↑
master
दोनों ही मामलों में, HEAD नवीनतम प्रतिबद्ध के लिए एक संकेतक है। जब आप एgit reset HEAD~1
, तो आप जीआईटी को HEAD पॉइंटर को वापस करने के लिए कहते हैं। लेकिन (जब तक आप उपयोग नहीं करते --hard
) आप अपनी फ़ाइलों को वैसे ही छोड़ देते हैं जैसे वे थे। इसलिए अब git status
उन परिवर्तनों को दिखाता है जिन्हें आपने सी में जांचा था। आपने एक चीज़ नहीं खोई है!
सबसे हल्के स्पर्श के लिए, आप अपनी प्रतिबद्धता को पूर्ववत भी कर सकते हैं लेकिन अपनी फ़ाइलों और अपने सूचकांक को छोड़ दें :
git reset --soft HEAD~1
यह न केवल आपकी फ़ाइलों को अकेला छोड़ देता है, यह आपके सूचकांक को भी छोड़ देता है अकेला । जब आप करते हैं git status
, तो आप देखेंगे कि वही फ़ाइलें पहले की तरह सूचकांक में हैं। वास्तव में, इस आदेश के ठीक बाद, आप कर सकते थे git commit
और आप उसी प्रतिबद्धता को फिर से लागू करेंगे जो आपने अभी-अभी की थी।
एक और बात: मान लीजिए कि आप एक कमिट को नष्ट कर देते हैं पहले उदाहरण के रूप में को , लेकिन फिर पता चलता है कि आपको इसकी आवश्यकता है ? कठिन भाग्य, है ना?
नहीं, अभी भी इसे वापस लाने का एक तरीका है। टाइप करें git reflog
और आपको (आंशिक) कमिट शॉ (यानी, हैश) की एक सूची दिखाई देगी , जिसे आप चारों ओर ले गए हैं। आपके द्वारा नष्ट की गई प्रतिबद्धता का पता लगाएं, और यह करें:
git checkout -b someNewBranchName shaYouDestroyed
अब आप फिर से जीवित हो गए हैं। कमिट्स वास्तव में कुछ 90 दिनों के लिए गिट में नष्ट नहीं होते हैं, इसलिए आप आमतौर पर वापस जा सकते हैं और एक को छुड़ा सकते हैं जिसका मतलब आपको छुटकारा पाने के लिए नहीं था।