उन विषयों पर कुछ अन्य अच्छे संदर्भ:
मैं इंडेक्स का उपयोग चेकपॉइंट के रूप में करता हूं ।
जब मैं एक बदलाव करने जा रहा हूं, जो कि अजीब हो सकता है - जब मैं कुछ दिशा तलाशना चाहता हूं, तो मुझे यकीन नहीं है कि मैं इसके माध्यम से पालन कर सकता हूं या यहां तक कि क्या यह एक अच्छा विचार है, जैसे कि एक वैचारिक रूप से मांग को फिर से भरना या बदलना प्रतिनिधित्व प्रकार - मैं सूचकांक में अपने काम की जांच करता हूं। यदि यह मेरी पिछली प्रतिबद्धताओं के बाद किया गया पहला परिवर्तन है, तो मैं स्थानीय रिपॉजिटरी का उपयोग चेकपॉइंट के रूप में कर सकता हूं, लेकिन अक्सर मुझे एक वैचारिक परिवर्तन मिला है जिसे मैं छोटे कदमों के सेट के रूप में लागू कर रहा हूं। मैं प्रत्येक चरण के बाद जांच करना चाहता हूं, लेकिन जब तक मैं वापस काम पर नहीं चला जाता, तब तक के लिए इस कोड को बचा लेता हूं।
टिप्पणियाँ:
कार्यक्षेत्र (स्रोत) की निर्देशिका वृक्ष है फ़ाइलें है कि आप देख सकते हैं और संपादित करें।
सूचकांक एक एकल, बड़े, द्विआधारी में फ़ाइल है <baseOfRepo>/.git/index
, जो वर्तमान शाखा में सभी फाइलों, उनके सूचीबद्ध करता है SHA1 चेकसम, समय टिकटों और फ़ाइल नाम - यह उस में फ़ाइलों की एक प्रतिलिपि के साथ एक और निर्देशिका नहीं है।
स्थानीय भंडार एक छिपा निर्देशिका (है .git
) एक सहित objects
निर्देशिका एक संकुचित "ब्लॉब" फ़ाइल के रूप में रेपो में हर फ़ाइल के सभी संस्करणों (स्थानीय शाखाओं और दूरदराज शाखाओं की प्रतियां) युक्त।
रेपो फाइलों की अलग-अलग प्रतियों के रूप में ऊपर दी गई छवि में दर्शाए गए चार 'डिस्क' के बारे में न सोचें।
उन्हें मूल रूप से Git commits के लिए संदर्भ दिए गए हैं। रेफ के दो प्रमुख प्रकार हैं: टैग और प्रमुख।
- टैग निश्चित संदर्भ हैं जो इतिहास में एक विशिष्ट बिंदु को चिह्नित करते हैं, उदाहरण के लिए v2.6.29।
- इसके विपरीत, सिर हमेशा परियोजना विकास की वर्तमान स्थिति को प्रतिबिंबित करने के लिए ले जाया जाता है।
(ध्यान दें: जैसा कि टिमो हुओवेन ने टिप्पणी की थी , वे तीर वे नहीं हैं जो कमिट्स को इंगित करते हैं, यह वर्कफ़्लो ऑर्डर है , मूल रूप से तीर दिखा रहा है कि पहली प्रतिबद्ध कहाँ है और अंतिम है)1 -> 2 -> 3 -> 4
1
4
अब हम जानते हैं कि परियोजना में क्या हो रहा है।
लेकिन यहाँ क्या हो रहा है, यह जानने के लिए, अभी एक विशेष संदर्भ है जिसे हेड कहा जाता है। यह दो प्रमुख उद्देश्य प्रदान करता है:
- यह बताता है कि Git कौन सी फाइल लेने के लिए प्रतिबद्ध है जब आप चेकआउट करते हैं, और
- यह बताता है कि आपके द्वारा किए जाने पर नए कमिट्स को कहां रखा जाए।
जब आप git checkout ref
इसे HEAD
रेफरी को इंगित करते हैं तो आपने इसे निर्दिष्ट किया है और इससे फाइलें निकाली हैं। जब आप git commit
इसे चलाते हैं तो एक नई प्रतिबद्ध वस्तु बनती है, जो करंट का बच्चा बन जाती है HEAD
। आम तौर पर HEAD
सिर में से एक को इंगित करता है, इसलिए सब कुछ ठीक काम करता है।
HEAD
वर्तमान शाखा की नोक पर प्रतिबद्ध है। यदि आपने अभी-अभी शाखा की जाँच की है, अर्थात कोई संशोधित फ़ाइल नहीं है, तो इसकी सामग्री कार्यशील वृक्ष से मेल खाती है। जैसे ही आप कुछ भी संशोधित करते हैं, यह अब मेल नहीं खाता।