2011-03-09 7 views
14

git checkout नाम की शाखाओं को स्विच करने के लिए गिट कमांड क्यों है?
क्या यह वास्तव में समझ में आता है?"गिट चेकआउट" नामक शाखाओं को स्विच करने के लिए गिट कमांड क्यों है?

मैं इसे git switch नाम दूंगा। इसके अलावा, git checkout के अन्य अर्थ हैं: उदा। एक फ़ाइल को वापस लेना (जैसे svn revert)

+5

क्योंकि लिनस ने फैसला किया कि यह इस तरह से होना चाहिए? – eckes

उत्तर

1

क्योंकि कमांड को दो क्रियाओं के लिए उपयोग किया जा सकता है, यह "चेकआउट" कीवर्ड का उपयोग करने के लिए "बनाता है" समझ में आता है।

दो कार्यों हैं:

  • पिछले एक करने के लिए एक फ़ाइल पर संशोधनों को रीसेट करने से प्रतिबद्ध आईडी
  • एक शाखा पर स्विच किया जा

तुम भी उपयोग कर सकते हैं '-' तर्क है जब आप शाखा नाम से एक प्रतिबद्ध आईडी को अलग करना चाहते हैं

6

यह एक अच्छा नाम है क्योंकि शाखा की जांच करते समय, आप रिपोजिटरी को आपको देने के लिए कह रहे हैं (जैसे कि "चेक आउट" लाइब्रेरी से किताबें) सभी उचित फाइलें उस शाखा के भीतर अपने कामकाजी प्रति के रूप में अपने नवीनतम संशोधन राज्यों में हैं।

वास्तव में git checkout का कोई अन्य मुद्दा "अन्य अर्थ" नहीं है। आदेश आपको संशोधन स्थिति X पर एक व्यक्तिगत फ़ाइल या फ़ाइलों का एक सेट देता है (पढ़ें: "एक शाखा")। चाहे आप मानते हैं कि "रिवर्टिंग" या नहीं, उस बिंदु पर बड़ा बिंदु गुम है जो git checkout लचीला और थोड़ा सामान्य है। दोनों मामलों में, यह को रिपोजिटरी से कुछ मात्रा की स्थिति की जांच कर रहा है और इसे संपादित करने के लिए तैयार आपकी कार्यशील प्रति के रूप में सेट कर रहा है।

+1

"चेकआउट" शब्द के साथ मेरा मुद्दा यह है कि इसका तात्पर्य है कि आप बाद में जांच करने के लिए बाध्य हैं। पुस्तकालय रूपक की तरह - आप एक पुस्तक उधार लेते हैं और फिर इसे बाद में वापस लाते हैं। या अन्य स्रोत नियंत्रण सॉफ़्टवेयर, जहां जांच करना एक ही अर्थ है - एक फ़ाइल में अस्थायी (शायद अनन्य) पहुंच होने पर जिसे बाद में चेक आउट किया जाना चाहिए। –

1

checkout कार्यरत पेड़ में फ़ाइल को अद्यतन करने का संदर्भ देता है। रिवर्टिंग का मतलब है कि काम करने वाले पेड़ में फ़ाइल को पिछली प्रतिबद्धता में अपडेट करना। तो मेरी समझ में यह git checkout का उपयोग करके अपडेट करने या वापस करने के लिए एक कमांड होना अधिक यथार्थवादी है।

12

मुझे लगता है कि अधिकांश अन्य उत्तरों बता रहे हैं कि git checkout क्या करता है और इसका वर्णन करने के लिए "चेकआउट" उचित तरीका क्यों हो सकता है। हालांकि, जबकि मैं Git महंगा प्यार करता हूँ, यह हताशा का दो गंभीर बात यह है कि पैदा होती है जब मैं लोगों को प्रणाली को समझने में मदद करने के लिए कोशिश कर रहा हूँ पर स्पर्श करता है:

  1. git checkout दो बहुत ही अलग बातें करता है, और यह होगा नए आने वालों के लिए उपयोगी अगर वे अलग-अलग आदेश थे।

  2. एक सनकी सुझाव दे सकता है कि जीवी की शब्दावली जानबूझकर सीवीएस और सबवर्जन से आने वाले लोगों को भ्रमित करने के लिए चुना गया था! जो आप उल्लेख करते हैं (checkout) एक शानदार उदाहरण है। एक और commit है, जो पूरी तरह से गिट में स्थानीय है और पूरी तरह से सीवीएस/एसवीएन में सर्वर पर निर्भर है - "रिकॉर्ड" की डार्क्स शब्दावली के लिए लोगों को गिट के लिए नए अन-सीखने की आवश्यकता होगी। अन्य उदाहरण मुझे पसंद है संदेश है कि आप Git में देखते हैं, जो वास्तव में "needs to be committed" :)

बेशक, एक हमेशा एक अलग दृश्यपटल git करने के लिए इस्तेमाल कर सकते हैं का अर्थ है "अपडेट आवश्यक है", easy git जैसे, iolaus है, आदि।लेकिन ज्यादातर लोगों को अंततः मानक आदेशों को सीखना होगा, इसलिए आपको उनमें से कुछ को आश्चर्यजनक रूप से नामित करने के लिए उपयोग करना होगा।

मुझे यकीन है कि वहाँ Git में इन विभिन्न आदेशों के नाम के लिए ऐतिहासिक कारणों से कर रहे हैं, लेकिन यह उपयोगी हो अगर अलग शब्द चुना गया था कि ...


अद्यतन:VonC लिंक टिप्पणियों में an answer with a neat alias to make git checkout safer अपने दो उपयोगों में से किसी एक में;)

+0

+1000: 100% सहमत हुए। चेकआउट खतरों पर अधिक: http://stackoverflow.com/questions/2961240/get-back-the-changes-after-accidental-checkout/2961348#2961348 – VonC

+0

@ वॉनसी: धन्यवाद - मुझे चेकपॉइंट मुहावरे पसंद है! –

+0

@ वॉनसी: इस विषय पर, मैंने सोचा था कि आपको मेरी एक नई ब्लॉग पोस्ट में दिलचस्पी हो सकती है [भ्रमित गिट टर्मिनोलॉजी] (http://longair.net/blog/2012/05/07/the-most-confusing- गिट-टर्मिनोलॉजी /) जो कुछ और उदाहरण जोड़ता है। –

संबंधित मुद्दे