दिलचस्प पोस्ट
एक संरचना या संघ में 'अहस्ताक्षरित अस्थायी: 3' क्या होता है? LINQ का प्रयोग करके सूचकांक कैसे प्राप्त करें? खोज के लिए शांत यूआरएल डिजाइन स्प्रैटाइम, एएस.पीओएसएक्सआईसीएक्स और ए.के. कन्वर्ट दिनांकटाइम को जूलियन दिनांक में सी # (सुरक्षित करने के लिए?) Android में स्क्रीनशॉट कैसे प्रोग्राम करना है? मैं किसी विशिष्ट श्वेतसूची को छोड़कर सभी HTML टैग कैसे फ़िल्टर करूं? पारदर्शी तुलनित्र क्या हैं? जावा में कानूनी पहचानकर्ता चेक करें कि चेकबॉक्स को jQuery के साथ चेक किया गया है या नहीं एकाधिक क्रियाएं मिलीं जो वेब एपीआई में अनुरोध से मेल खाती हैं कैसे दो तालिकाओं mysql में शामिल होने के लिए? सभी MySQL तालिकाओं से सभी कॉलम प्राप्त करें स्प्रिंग सुरक्षा का इस्तेमाल स्प्रिंग नियंत्रकों के तरीकों पर पूर्व अधिकार का उपयोग कर सकता है? फ़ायरफ़ॉक्स समर्थन की स्थिति है: टेबल तत्वों पर रिश्तेदार?

जीआईटी चेकआउट के बीच अंतर – ट्रैक मूल / शाखा और जीआईटी चेकआउट- बी शाखा की उत्पत्ति / शाखा

क्या किसी को दूरस्थ शाखा को स्विच करने और ट्रैक करने के लिए इन दोनों आज्ञाओं के बीच का अंतर पता है?

git checkout -b branch origin/branch git checkout --track origin/branch 

मुझे लगता है कि दोनों दूरदराज के शाखा का ट्रैक रखते हैं, इसलिए मैं अपने परिवर्तनों को मूल रूप से शाखा में डाल सकता हूं, है ना?

क्या कोई व्यावहारिक अंतर है ??

धन्यवाद!

वेब के समाधान से एकत्रित समाधान "जीआईटी चेकआउट के बीच अंतर – ट्रैक मूल / शाखा और जीआईटी चेकआउट- बी शाखा की उत्पत्ति / शाखा"

दोनों आज्ञाओं का एक ही प्रभाव है ( यह इंगित करने के लिए रॉबर्ट सिमर के उत्तर के लिए धन्यवाद )

व्यावहारिक अंतर तब होता है जब अलग-अलग नाम की एक स्थानीय शाखा का इस्तेमाल होता है:

  • git checkout -b mybranch origin/abranch mybranch और origin/abranch mybranch को ट्रैक किया होगा
  • git checkout --track origin/abranch केवल ' abranch ' git checkout --track origin/abranch , न कि एक अलग नाम के साथ एक शाखा।

सबसे पहले, कुछ पृष्ठभूमि: ट्रैकिंग का मतलब है कि एक स्थानीय शाखा में एक अपस्ट्रीम सेट दूरस्थ रिमोट है:

 # git config branch.<branch-name>.remote origin # git config branch.<branch-name>.merge refs/heads/branch 

git checkout -b branch origin/branch

  • origin/branch द्वारा संदर्भित बिंदु पर branch बना / रीसेट करें
  • शाखा branch ( git branch साथ) बनाएं और दूरस्थ ट्रैकिंग शाखा origin/branch ट्रैक करें

जब एक स्थानीय शाखा एक रिमोट-ट्रैकिंग शाखा से शुरू होती है, तो गिट शाखा (विशेष रूप से branch.<name>.remote और branch.<name>.merge branch.<name>.remote कॉन्फ़िगरेशन प्रविष्टियां) सेट करती है, ताकि git pull रिमोट- ट्रैकिंग शाखा
यह व्यवहार वैश्विक branch.autosetupmerge माध्यम से बदला जा सकता है। branch.autosetupmerge कॉन्फ़िगरेशन ध्वज उस सेटिंग को --track और --no-track विकल्पों का उपयोग करके ओवरराइड किया जा सकता है, और बाद में git शाखा --set-upstream-to का उपयोग कर बदल दिया गया है


और git checkout --track origin/branch समान कार्य करेगा:

  # or, since 1.7.0 git branch --set-upstream branch upstream/branch # or, since 1.8.0 (October 2012) git branch --set-upstream-to branch upstream/branch # the short version remains the same: git branch -u branch upstream/branch 

यह ' branch ' के लिए अपस्ट्रीम भी स्थापित करेगा

(नोट: git1.8.0 git branch --set-upstream –सेट git branch --set-upstream को हटाना और उसे git branch -u|--set-upstream-to साथ प्रतिस्थापित करेगा git branch -u|--set-upstream-to : git1.8.0-rc1 घोषित करें )


एक स्थानीय शाखा के लिए पंजीकृत अपस्ट्रीम शाखा होने से:

  • git status और git branch -v में दो शाखाओं के बीच रिश्ते को दिखाने के लिए गिट को बताएं।
  • नई शाखा की जांच होने पर अपस्ट्रीम से खींचने के लिए तर्कों के बिना git pull निर्देशित करता है

अधिक के लिए " आप मौजूदा जीआईटी शाखा को एक दूरस्थ शाखा कैसे ट्रैक कर सकते हैं? " देखें।

इसमें कोई अंतर नहीं है!

1) git checkout -b branch origin/branch

अगर कोई --track और नो --no-track --track --no-track , --track को डिफ़ॉल्ट के रूप में माना जाता है डिफ़ॉल्ट सेटिंग सेटिंग branch.autosetupmerge साथ बदला जा सकता है। branch.autosetupmerge

प्रभाव में, 1) git checkout -b branch --track origin/branch तरह व्यवहार करता है।

2) git checkout --track origin/branch

"एक सुविधा के रूप में", --track बिना --track -b मतलब- -b --track के तर्क को "शाखा" माना जाता है अनुमान remote.origin.fetch जाता है कि कॉन्फ़िगरेशन चर remote.origin.fetch

असल में, 2) git checkout -b branch --track origin/branch तरह व्यवहार करता है।

जैसा कि आप देख सकते हैं: कोई अंतर नहीं।

लेकिन यह और बेहतर हो जाता है:

3) git checkout branch

git checkout -b branch --track origin/branch बराबर है यदि "शाखा" अभी तक मौजूद नहीं है लेकिन "मूल / शाखा" 1 करता है


सभी तीन कमांड "शाखा / शाखा" के "अपस्ट्रीम" सेट करते हैं (या वे विफल)।

अपस्ट्रीम को तर्क के संदर्भ बिंदु के रूप में प्रयोग किया जाता है- कम git status , git push , git merge और इस प्रकार git pull (यदि कॉन्फ़िगर किया गया है (जो कि डिफ़ॉल्ट या लगभग डिफ़ॉल्ट है))।

उदाहरण के लिए git status आपको बताती है कि अगर किसी को कॉन्फ़िगर किया गया है तो आप कितनी पीछे या आगे बढ़ रहे हैं।

git push को वर्तमान शाखा अपस्ट्रीम को डिफ़ॉल्ट 2 द्वारा git 2.0 के बाद से पुश करने के लिए कॉन्फ़िगर किया गया है।

1 … और यदि "मूल" एकमात्र दूरस्थ "शाखा" है
2 डिफ़ॉल्ट (नाम "सरल") दोनों शाखा नामों के बराबर होने के लिए भी लागू होता है

किताब से संकेत मिलता है कि ये आदेश समान प्रभाव उत्पन्न करते हैं:

सरल मामला वह उदाहरण है जिसे आपने अभी देखा है, जीआईटी चेकआउट-बी [शाखा] [रिमोटिनम] / [शाखा] चल रहा है यदि आपके पास गीट संस्करण 1.6.2 या बाद का है, तो आप –track शॉर्टहैंड का भी उपयोग कर सकते हैं:

 $ git checkout --track origin/serverfix Branch serverfix set up to track remote branch serverfix from origin. Switched to a new branch 'serverfix' 

दूरस्थ शाखा की तुलना में एक अलग शाखा के साथ एक स्थानीय शाखा स्थापित करने के लिए, आप आसानी से एक अलग स्थानीय शाखा नाम के साथ पहले संस्करण का उपयोग कर सकते हैं:

 $ git checkout -b sf origin/serverfix 

यह विशेष रूप से आसान है जब आपका बैश या ओह- मेरा- zsh git समापन आपके लिए origin/serverfix नाम खींचने में सक्षम होता है – बस --track (या -t ) को जोड़ें और आप अपने रास्ते पर हैं