HEAD, मास्टर, उत्पत्ति की गाइट अवधारणाएँ क्या हैं?


194

जैसा कि मैं git के बारे में सीख रहा हूं, मैं HEAD, मास्टर, उत्पत्ति के संदर्भ में आता रहता हूं और मुझे यकीन नहीं है कि अंतर क्या हैं। अगर मैं सही तरीके से समझूं, तो HEAD हमेशा नवीनतम संशोधन के बराबर है? और यदि हां, तो क्या यह संपूर्ण भंडार का, या किसी विशिष्ट शाखा या टैग का नवीनतम संशोधन है? यह कितना भ्रामक है। मैंने इस पर बहुत सारे ट्यूटोरियल पढ़े हैं और ब्रांचिंग / मर्जिंग जैसी चीजें हैं, लेकिन फिर भी मैं अपने सिर को इसके चारों ओर नहीं लपेट सकता।

जवाबों:


228

मैं स्कॉट चाकोन की पुस्तक "प्रो गिट" की अत्यधिक अनुशंसा करता हूं । समय ले लो और वास्तव में इसे पढ़ें, जबकि आप करते हैं एक वास्तविक गिट रेपो की खोज।

हेड : आपका रेपो चालू करने वाला चालू है। अधिकांश समय HEADआपकी वर्तमान शाखा की नवीनतम प्रतिबद्धताओं की ओर इशारा करता है, लेकिन ऐसा नहीं होना चाहिए। HEADवास्तव में बस का अर्थ है "मेरा रेपो वर्तमान में क्या इंगित कर रहा है"।

इस घटना में कि प्रतिबद्ध का HEADउल्लेख किसी भी शाखा का टिप नहीं है, इसे "अलग सिर" कहा जाता है।

मास्टर : पहली बार रेपो बनाते समय डिफ़ॉल्ट शाखा का नाम जो आपके लिए बनाता है। ज्यादातर मामलों में, "मास्टर" का अर्थ है "मुख्य शाखा"। अधिकांश दुकानों में हर कोई मास्टर को धक्का देता है, और मास्टर को रेपो का निश्चित दृश्य माना जाता है। लेकिन रिलीज के लिए रिलीज़ की जाने वाली शाखाओं को भी मास्टर ऑफ कर दिया जाना आम है। आपके स्थानीय रेपो की अपनी एक मास्टर शाखा है, जो लगभग हमेशा एक दूरस्थ रेपो के मास्टर का अनुसरण करती है।

उत्पत्ति : डिफ़ॉल्ट नाम जो आपके मुख्य रिमोट रेपो को देता है। आपके बॉक्स का अपना रेपो है, और आप सबसे अधिक संभावना है कि आप कुछ दूरस्थ रेपो को धक्का देते हैं जिसे आप और आपके सभी सहकर्मी धक्का देते हैं। उस रिमोट रेपो को लगभग हमेशा मूल कहा जाता है, लेकिन यह होना जरूरी नहीं है।

HEADgit में एक आधिकारिक धारणा है। HEADहमेशा एक अच्छी तरह से परिभाषित अर्थ है। masterऔर originआम नाम आमतौर पर गिट में उपयोग किए जाते हैं, लेकिन उन्हें होना जरूरी नहीं है।


क्या मतलब है "हेड से वास्तव में" का अर्थ है "मेरा रेपो वर्तमान में इंगित कर रहा है"। यदि एक रिपॉजिटरी में कई शाखाएं हैं, तो आपके अनुसार कौन सा HEAD है? यदि 3 शाखाएं (मास्टर के साथ) हैं, और शाखा में एक जरूरत कमिट की गई थी, तो एचईएडी अभी भी 'मास्टर' की प्रतिबद्धता में हो सकता है। तो, कौन सा संशोधन है जो रेपो अब इंगित कर रहा है?
OK999

2
रेपो (स्थानीय या दूरस्थ) से आपका क्या अभिप्राय है। सामान्य तौर पर आपका उत्तर अभिव्यक्ति का उपयोग करता है, बिना उन्हें समझाए।

मैंने दूरस्थ रेपो की नोक पर अपनी कामकाजी निर्देशिका की तुलना करने के लिए एक समानांतर निर्देशिका में एक क्लोन किया। यह कितना अच्छा है, सभी जवाब हैं।

@JingHe क्या आपने पूरी किताब पढ़ी है? यह वास्तव में इसके लायक है? मेरा मतलब है कि हम एक भयानक 500+ पृष्ठों के बारे में बात कर रहे हैं, जो मेरे लिए बहुत अधिक लगता है ...
मैक्स

1
यह सत्यापित करने के लिए कि मैं तर्क को समझता हूं, मैं रिमोट के रूप में एक शाखा को फीचरए कह सकता हूं और जब मैं उस शाखा को धक्का देता हूं, तो मैं "गिट पुश ओरिजनल एएए" टाइप करता हूं। मैं रिमोट से समान खींच सकता हूं और "गिट पुल ओरिजनल फीचरए" कहकर बदलाव ला सकता हूं। और हेड केवल स्थानीय कॉपी की बात कर रहा है। @ OK999 मुझे विश्वास है कि HEAD आपको जिस भी ब्रांच में चेक किया जा रहा है, वह लोकल में है। यदि कमेटी ब्रांच में बनाई गई थी, लेकिन वर्तमान में आप ब्रांच पर हैं, तो हेड शाखा की ओर इशारा कर रहा है। इससे पहले कि आप कोई विशेष कमिट करें आपको HEAD को ब्रांच में वापस ले जाना होगा।
6

43

HEADनवीनतम संशोधन नहीं है, यह वर्तमान संशोधन है। आमतौर पर, यह वर्तमान शाखा का नवीनतम संशोधन है, लेकिन यह होना जरूरी नहीं है।

master आमतौर पर मुख्य शाखा को दिया गया एक नाम है, लेकिन इसे कुछ और कहा जा सकता है (या कोई मुख्य शाखा नहीं हो सकती है)।

originआमतौर पर मुख्य रिमोट को दिया गया एक नाम है। रिमोट एक और रिपॉजिटरी है जिसे आप खींच सकते हैं और धक्का दे सकते हैं। आमतौर पर यह कुछ सर्वर पर होता है, जैसे कि जीथब।


1
क्या आप एक उदाहरण दे सकते हैं जब HEAD चालू है लेकिन नवीनतम नहीं है? मैंने ऐसा पहले कभी नहीं देखा। या क्या आपका मतलब है कि यह नवीनतम नहीं हो सकता है क्योंकि आपकी शाखा उस दूरस्थ शाखा के पीछे है जो इसे ट्रैक कर रही है?
मैट ग्रीर

12
@MattGreer: यदि आप कुछ पुराने (जैसे टैग जैसे git checkout v1.1) की जांच करते हैं, तो आपका एचएडी उस टैग की प्रतिबद्धता में बदल जाता है। यह नवीनतम प्रतिबद्धता नहीं हो सकती है।
ग्रेग हेवगिल

8

हालांकि यह सीधे सवाल का जवाब नहीं देता है, वहाँ मुफ्त में महान पुस्तक उपलब्ध है जो आपको ProGit नामक मूल बातें सीखने में मदद करेगी । यदि आप मृत-लकड़ी संस्करण को बिट्स के संग्रह के लिए पसंद करेंगे, तो आप इसे अमेज़ॅन से खरीद सकते हैं


9
सवाल किताब के लिए नहीं पूछा! यह मेरे लिए अभी भी अस्पष्ट है, मुझे git के लिए एक पुस्तक की आवश्यकता क्यों होगी, जब मुझे C ++ के लिए एक की आवश्यकता नहीं होगी।

11
आप केवल यह सोचते हैं कि आपको C ++;) के लिए किसी पुस्तक की आवश्यकता नहीं है
Piotr Perak
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.