"गिट शाखा" और "गिट चेकआउट-बी" में क्या अंतर है?


195

मैं git checkout -bएक नई शाखा बनाता था। मुझे लगता है कि git branchवही काम करता है। यदि ये दोनों अलग-अलग हैं, तो ये दोनों आज्ञाएँ कैसे भिन्न हैं?


जवाबों:


259

git checkout -b BRANCH_NAMEएक नई शाखा बनाता है और नई शाखा की जाँच करता है जबकि git branch BRANCH_NAMEएक नई शाखा बनाता है लेकिन आपको उसी शाखा पर छोड़ देता है।

दूसरे शब्दों में git checkout -b BRANCH_NAMEआप के लिए निम्नलिखित है।

git branch BRANCH_NAME    # create a new branch
git checkout BRANCH_NAME  # then switch to the new branch

44

git branch शाखा बनाता है, लेकिन आप वर्तमान शाखा में रहते हैं जिसे आपने चेक आउट किया है।

git checkout -b एक शाखा बनाता है और इसकी जाँच करता है।

इसका संक्षिप्त रूप माना जा सकता है:

git branch name
git checkout name

इसके बजाय हम कहते हैं: "गिट शाखा शाखा बनाती है लेकिन आप वर्तमान शाखा से बने रहते हैं जो आपने चेक आउट किया है।"
आकाश वर्मा

28
  • git branch: अपनी सभी शाखाओं को दर्शाता है
  • git branch newbranch: एक नई शाखा बनाता है
  • git checkout -b newbranch: एक नई शाखा बनाता है और उस शाखा में तुरंत स्विच करता है। इसके बाद भी ऐसा ही होता git branch newbranchहै git checkout newbranch

24

पूर्ण सिंटैक्स:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

[FROM_BRANCH] वैकल्पिक है। यदि FROM_BRANCH नहीं है, तो git वर्तमान शाखा का उपयोग करेगा।


7

उल्लेख करने के लिए एक और ध्वज भी है, जो इन के सापेक्ष है ।।

git checkout -B BRANCH_NAME

यह एक बहुत ही उपयोगी कमांड है जिसका उपयोग मैंने हाल ही में किया है। यह कमांड आपके द्वारा निर्दिष्ट शाखा की जांच करती है, और स्रोत शाखा के आधार पर शाखा को रीसेट करती है।


2
क्या आप और अधिक व्याख्या कर सकते हैं? मैं नहीं जानता कि git के लिए रीसेट का क्या मतलब है
Mikaël Mayer

3
मैनुअल ऑन गिट से:If -B is given, <new_branch> is created if it doesn't exist; otherwise, it is reset. This is the transactional equivalent of $ git branch -f <branch> [<start point>] $ git checkout <branch>
ddavison

तो आपका मतलब है कि आप किसी मौजूदा शाखा का पुन: उपयोग कर सकते हैं?
मिकाइल मेयर

1
है checkout -Bअगर शाखा आप का उपयोग करने जा रहे हैं दूसरों के द्वारा साझा किया जाता है खतरनाक? मैंने हाल ही में इसका उपयोग किया था और यह मेरी दूसरी शाखा में होने वाले परिवर्तनों को स्वचालित रूप से उस शाखा में विलीन हो गया जिसे मैंने स्विच किया था।
जेफ

यदि आप किसी अन्य डेवलपर्स शाखा को रिमोट से लाते हैं, और git checkout -Bफिर हाँ करते हैं, तो यह विलीन हो जाएगी, या संभवतः बदल भी सकती है
ddavison

-1

दोनों कमांड के रूप हैं जो समान हैं (git-scm डॉक्स संस्करण 2.11.1 को देखते हुए):

git branch <branchname> <start-point>

तथा

git checkout -b <new_branch> <start_point>

बाद पहली शाखा आदेश को क्रियान्वित करने और उसके बाद चेकआउट जोड़ने। उस रूप में स्पष्ट रूप से गिट-शाखा के डॉक्टर के संदर्भ:

निर्दिष्ट करने वाले -b के कारण एक नई शाखा बनाई जाती है जैसे कि गिट-शाखा [2] को बुलाया गया था और फिर जाँच की गई थी


1
यह 2011 से स्वीकार किए गए उत्तर पर कोई नई जानकारी नहीं जोड़ता है।
मेलपोमीन

यह वास्तव में <स्टार्ट-पॉइंट> के बारे में नई जानकारी जोड़ता है। जो मैंने व्यक्तिगत रूप से पहले स्थित वस्तु को जांचने के लिए या वर्तमान शाखा को स्थानांतरित किए बिना कहीं और स्थित शाखाओं को बनाने के लिए काफी उपयोगी पाया। [FROM_BRANCH] के रूप में नोटेशन का उपयोग करते हुए जब वास्तव में git-reference का मतलब होता है तो यह मेरी राय में उपयोगी नहीं है।
Pshemy108

वैकल्पिक दूसरा तर्क प्रश्न के लिए प्रासंगिक नहीं है। यह दोनों आज्ञाओं के बीच समान है, और ओपी अंतर के लिए पूछ रहा था। (यदि आप वास्तव में सोचते हैं कि यह आवश्यक है, तो मैं सिर्फ स्वीकृत उत्तर के लिए एक टिप्पणी
जोड़ूंगा

-1

अनिवार्य रूप से:

ए-गिट शाखा आपको एक शाखा सादा और सरल बनाने की सुविधा देती है।

बी -गिट चेकआउट-बी आपको एक ही समय में एक शाखा बनाने और इसे स्विच करने की अनुमति देता है।

आप कब उपयोग करेंगे? 1- जब आप एक शाखा बनाना चाहते हैं, लेकिन वर्तमान शाखा पर बने रहें। 2- git checkout -b जब आप बनाना और स्विच करना चाहते हैं। यदि आप इसे देखते हैं तो एक शाखा बनाना और इसे स्विच करना सहज है। तो चुनाव आपका है :)


4
यह 2011 से स्वीकार किए गए उत्तर पर कोई नई जानकारी नहीं जोड़ता है।
मेलपोमेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.