दोनों आदेशों का एक ही प्रभाव है ( रॉबर्ट सिमर के जवाब के लिए धन्यवाद )।
व्यावहारिक अंतर आता है जब एक स्थानीय नामित शाखा का उपयोग कर अलग ढंग से :
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 कोर्स- नहीं जानता है। इसलिए आपको इसका रिमोट निर्दिष्ट करना चाहिए।