दोनों आदेशों का एक ही प्रभाव है ( रॉबर्ट सिमर के जवाब के लिए धन्यवाद )।
व्यावहारिक अंतर आता है जब एक स्थानीय नामित शाखा का उपयोग कर अलग ढंग से :
git checkout -b mybranch origin/abranchबनाएंगे mybranchऔर ट्रैक करेंगेorigin/abranch
git checkout --track origin/abranchकेवल ' abranch' का निर्माण करेगा , एक अलग नाम वाली शाखा का नहीं।
(यह है, जैसा कि सेबस्टियन ग्राफ द्वारा टिप्पणी की गई थी , अगर स्थानीय शाखा पहले से मौजूद नहीं थी ।
यदि ऐसा हुआ, तो आपको इसकी आवश्यकता होगी git checkout -B abranch origin/abranch)
नोट: Git 2.23 (Q3 2019) के साथ, जो नई कमांड काgit switch उपयोग करेगा :
git switch -c <branch> --track <remote>/<branch>
यदि शाखा कई रीमोट में मौजूद है और उनमें से एक को checkout.defaultRemoteकॉन्फ़िगरेशन चर द्वारा नाम दिया गया है , तो हम उस एक का उपयोग अव्यवस्था के उद्देश्यों के लिए करेंगे, भले ही <branch>सभी रीमोट में अद्वितीय न हो। अगर यह अस्पष्ट है, लेकिन 'मूल' रिमोट पर मौजूद है, तो
इसे checkout.defaultRemote=originहमेशा दूरस्थ शाखाओं की जांच करने के लिए उदा में सेट करें <branch>।
यहाँ, ' -c' नया है ' -b'।
सबसे पहले, कुछ पृष्ठभूमि: ट्रैकिंग का मतलब है कि एक स्थानीय शाखा का एक दूरस्थ शाखा के लिए अपस्ट्रीम सेट है:
# git config branch.<branch-name>.remote origin
# git config branch.<branch-name>.merge refs/heads/branch
git checkout -b branch origin/branch मर्जी:
branchद्वारा संदर्भित बिंदु पर बनाएँ / रीसेट करें origin/branch।
- शाखा बनाएं
branch(साथ git branch) और दूरस्थ ट्रैकिंग शाखा को ट्रैक करें origin/branch।
जब एक स्थानीय शाखा को दूरस्थ-ट्रैकिंग शाखा से शुरू किया जाता है, तो Git शाखा (विशेष रूप से branch.<name>.remoteऔर branch.<name>.mergeकॉन्फ़िगरेशन प्रविष्टियाँ) को सेट करता है, ताकि git pullरिमोट-ट्रैकिंग शाखा से उचित रूप से विलय हो सके।
यह व्यवहार वैश्विक branch.autosetupmergeकॉन्फ़िगरेशन ध्वज के माध्यम से बदला जा सकता है । सेटिंग --trackऔर --no-trackविकल्पों का उपयोग करके उस सेटिंग को ओवरराइड किया जा सकता है , और बाद में गिट शाखा का उपयोग करके बदल दिया जा सकता है --set-upstream-to।
और git checkout --track origin/branchवैसा ही करेंगे git branch --set-upstream-to):
# or, since 1.7.0
git branch --set-upstream upstream/branch branch
# or, since 1.8.0 (October 2012)
git branch --set-upstream-to upstream/branch branch
# the short version remains the same:
git branch -u upstream/branch branch
यह ' branch' के लिए अपस्ट्रीम भी सेट करेगा ।
(नोट: git1.8.0 अपग्रेड करेगा git branch --set-upstreamऔर इसे बदल देगा git branch -u|--set-upstream-to: git1.8.0-rc1 घोषणा देखें )
एक स्थानीय शाखा के लिए एक अपस्ट्रीम शाखा पंजीकृत होगी:
- में
git statusऔर दो शाखाओं के बीच के रिश्तेgit branch -v को दिखाने के लिए git बताएं ।
- जब नई शाखा की जाँच की जाती है तो अपस्ट्रीम से खींचने के लिए
git pull बिना तर्क के निर्देश ।
अधिक के लिए " आप मौजूदा गिट शाखा को दूरस्थ शाखा कैसे बनाते हैं? " देखें।
git pull, जबकि कुछ शाखाएं एक दूरस्थ शाखा से खींचने के लिए कहेंगी। यह पता चला है कि यदि आप, अपने पहली बार में, एक दूरस्थ शाखा की जाँच कर रहे हैं जिसे आपके सहकर्मी ने बनाया है, तो git चला जाता है औरbranch.<BNAME>.remote=originस्थानीय gitconfig में जुड़ जाता है। जो तब आपको जारी करने की अनुमति देता हैgit pull। हालाँकि, यदि आप शाखा बना रहे हैंgit checkout -b BNAME, तो git -of कोर्स- नहीं जानता है। इसलिए आपको इसका रिमोट निर्दिष्ट करना चाहिए।