"रीसेट" स्थानीय रूप से परिवर्तनों को पूर्ववत करने का तरीका है। जब आप कमिट करते हैं, तो आप " git add " के साथ शामिल करने के लिए परिवर्तनों का चयन करते हैं - जिसे "स्टेजिंग" कहा जाता है। और एक बार जब बदलावों का मंचन हो जाता है, तो आप उन्हें " कमिट " कर देते हैं।
स्टेजिंग या कमिट में से वापस आने के लिए, आप HEAD को "रीसेट" करें। शाखा पर, HEAD एक git वैरिएबल है जो सबसे हालिया कमेंट की ओर इशारा करता है। इसलिए यदि आपने मंचन किया है, लेकिन प्रतिबद्ध नहीं है, तो आप " HEAD रीसेट करें ।" वह मंच से परिवर्तन करके वर्तमान HEAD तक का समर्थन करता है। यह " git reset --mixed HEAD ~ 0 के लिए शॉर्टहैंड है ।"
यदि आप पहले से ही प्रतिबद्ध हैं, तो HEAD पहले से ही उन्नत हो चुका है, इसलिए आपको पिछली कमिटमेंट का बैकअप लेना होगा। यहाँ आप " HEAD ~ 1 रीसेट करें " या " HEAD ^ 1 रीसेट करें " या " रीसेट HEAD ~ " या " रीसेट HEAD ^ " - सभी संदर्भ HEAD माइनस एक।
बेहतर प्रतीक कौन सा है, ~ या ^? ~ टिल्ड को एकल धारा के रूप में सोचें - जब प्रत्येक प्रतिबद्ध में एक ही माता-पिता होते हैं और यह अनुक्रम में बदलाव की एक श्रृंखला होती है, तो आप टिल्ड का उपयोग करके धारा का संदर्भ ले सकते हैं, जैसा कि HEAD ~ 1, HEAD ~ 2, HEAD ~ 3, माता-पिता, दादा-दादी, परदादा, आदि के लिए (तकनीकी रूप से यह पहले की पीढ़ियों में पहला माता-पिता ढूंढ रहा है)।
जब कोई मर्ज होता है, तो कमिट में एक से अधिक माता-पिता होते हैं। जब ^ कैरेट खेलने में आता है - तो आप याद रख सकते हैं क्योंकि यह शाखाओं को एक साथ आने को दर्शाता है। कैरेट का उपयोग करके, HEAD ^ 1 पहला माता-पिता होगा और HEAD ^ 2 उदाहरण के लिए, एकल प्रतिबद्ध - माता और पिता का दूसरा माता-पिता होगा।
इसलिए यदि आप सिंगल-पैरेंट कमिट पर सिर्फ एक हॉप वापस ले रहे हैं, तो HEAD ~ और HEAD ^ समतुल्य हैं - आप दोनों में से किसी एक का उपयोग कर सकते हैं।
इसके अलावा, रीसेट हो सकता है --soft , --mixed , या --hard । एक नरम रीसेट बस कमिट को वापस करता है - यह HEAD को रीसेट करता है, लेकिन यह पहले की कमिट से फाइलों की जांच नहीं करता है, इसलिए वर्किंग डायरेक्टरी में सभी बदलाव संरक्षित हैं। और --soft रीसेट भी चरण ( सूचकांक के रूप में भी जाना जाता है ) को साफ नहीं करता है , इसलिए सभी फ़ाइलों का मंचन अभी भी मंच पर होगा।
A --mixed रीसेट (डिफ़ॉल्ट) भी पहले की गई फ़ाइलों की जाँच नहीं करता है, इसलिए सभी परिवर्तन संरक्षित हैं, लेकिन चरण को हटा दिया गया है। यही कारण है कि एक सरल " जीआईटी रीसेट हेड " चरण बंद कर देगा।
A --hard रीसेट HEAD को रीसेट करता है, और यह स्टेज को क्लियर करता है, लेकिन यह पहले की गई सभी फाइलों को भी चेक करता है और इसलिए यह किसी भी बदलाव को ओवरराइट कर देता है।
यदि आपने कमेटी को रिमोट रिपॉजिटरी में धकेल दिया है, तो रीसेट इतनी अच्छी तरह से काम नहीं करता है। आप स्थानीय रूप से रीसेट कर सकते हैं, लेकिन जब आप रिमोट को पुश करने का प्रयास करेंगे, तो गिट यह देखेगा कि आपका स्थानीय हेड रिमोट शाखा में हेड के पीछे है और धक्का देने से इनकार करेगा। आप जोर जबरदस्ती करने में सक्षम हो सकते हैं, लेकिन वास्तव में ऐसा करना पसंद नहीं है।
वैकल्पिक रूप से, आप कर सकते हैं भी छिपा सकते अपने परिवर्तनों को आप उन्हें रखने के लिए, चाहते हैं, तो बाहर की जाँच पहले प्रतिबद्ध, परिवर्तन अन-छिपाया, चरण उन्हें, बनाने के लिए एक नया प्रतिबद्ध, और फिर उस धक्का।