तीन जगह हैं जहां एक फ़ाइल, कहते हैं, हो सकती है - पेड़, सूचकांक और काम की प्रतिलिपि। जब आप किसी फ़ाइल को फ़ोल्डर में जोड़ते हैं, तो आप उसे कार्यशील प्रतिलिपि में जोड़ रहे हैं।
जब आप कुछ ऐसा करते हैं जैसे git add fileआप इसे इंडेक्स में जोड़ते हैं। और जब आप इसे करते हैं, तो आप इसे पेड़ पर भी जोड़ते हैं।
यह शायद आपको git रीसेट में तीन और सामान्य झंडे जानने में मदद करेगा:
git रीसेट [- <mode>] [ <commit>]
यह फ़ॉर्म वर्तमान शाखा प्रमुख को रीसेट करता है <commit>और संभवतः अनुक्रमणिका (इसे के पेड़ पर रीसेट करना <commit>) और कार्यशील वृक्ष पर निर्भर करता है <mode>, जो निम्न में से एक होना चाहिए:
--soft को अद्यतन करता है
इंडेक्स फ़ाइल और न ही कार्यशील पेड़ को बिल्कुल भी नहीं छूता है (लेकिन <commit>सभी मोड्स की तरह सिर को रीसेट करता है)। यह आपकी सभी परिवर्तित फ़ाइलों को "परिवर्तन किए जाने के लिए प्रतिबद्ध है" छोड़ देता है, क्योंकि गिट स्थिति इसे डाल देगी।
--मिश्रित
सूचकांक को रीसेट करता है, लेकिन काम करने वाले पेड़ को नहीं (यानी, बदली गई फाइलें संरक्षित हैं, लेकिन प्रतिबद्ध के लिए चिह्नित नहीं हैं) और रिपोर्ट करता है कि क्या अद्यतन नहीं किया गया है। यह डिफ़ॉल्ट क्रिया है।
--मुश्किल
सूचकांक और काम करने वाले पेड़ को रीसेट करता है। कार्यशील ट्री में ट्रैक की गई फ़ाइलों में कोई परिवर्तन होने के बाद से <commit>उन्हें छोड़ दिया जाता है।
अब, जब आप कुछ ऐसा करते हैं git reset HEAD- आप वास्तव में क्या कर रहे हैं git reset HEAD --mixedऔर यह सूचकांक को उस स्थिति में "रीसेट" कर देगा , जब आप फ़ाइलों को जोड़ना शुरू कर रहे थे या सूचकांक में संशोधन जोड़ना चाहते थे ( इस माध्यम से git add) इस मामले में, काम की प्रतिलिपि और इंडेक्स (या स्टेजिंग) सिंक में थे, लेकिन आपने रीसेट के बाद सिंक और इंडेक्स को सिंक में बना दिया।
git rmदूसरी ओर एक फाइल को वर्किंग डायरेक्टरी और इंडेक्स से हटाता है और जब आप कमिट करते हैं, तो फाइल को ट्री से भी हटा दिया जाता है। git rm --cachedहालाँकि, फ़ाइल को केवल इंडेक्स से हटाता है और इसे आपकी कार्य प्रतिलिपि में रखता है। यह बिल्कुल विपरीत है git add file इस मामले में, आपने सूचकांक को हेड और वर्किंग से अलग होने के लिए बनाया था, इसमें एचआईएडी के पास फ़ाइल का पहले से प्रतिबद्ध संस्करण है, वर्किंग कॉपी में अंतिम संशोधन था यदि हेड या से फ़ाइल और आपने फ़ाइल को इंडेक्स से हटा दिया। एक कमिट अब इंडेक्स और ट्री को सिंक करेगा और फाइल को हटा दिया जाएगा।
git rm --cachedgit diffgit diff --cachedgit statusUntracked