गिट्ट दूरस्थ शाखा


2260

मैं और मेरा सहयोगी एक ही भंडार पर काम कर रहे हैं। हमने इसे दो शाखाओं में विभाजित किया है, प्रत्येक तकनीकी रूप से विभिन्न परियोजनाओं के लिए, लेकिन उनमें समानताएं हैं, इसलिए हम कभी-कभी * masterसे * तक वापस करना चाहते हैं branch

हालाँकि, मेरे पास है branch। मेरे सहयोगी उस शाखा को विशेष रूप से कैसे खींच सकते हैं?

git cloneभंडार में से एक उसके लिए स्थानीय रूप से शाखाएं बनाने के लिए नहीं लगता है, हालांकि मैं उन्हें अपने अंत के बाद एक धक्का देने के बाद अनफिट पर लाइव देख सकता हूं।

इसके अलावा, जब मैंने मूल रूप से शाखा बनाई, तो मैंने किया -b checkout। क्या इससे बहुत फर्क पड़ता है?

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

$ git fetch origin discover
$ git checkout discover

ये मेरे द्वारा चलाए गए आदेश हैं। लेकिन यह निश्चित रूप से काम नहीं कर रहा है।

मैं उस शाखा की जांच करना चाहता हूं और फिर विभिन्न सहयोगियों या कार्यस्थलों से शाखाओं को बदल देता हूं



33
मैंने इस्तेमाल किया: git fetch --allफिर सभी शाखाओं को देखने के लिए:, git branchफिर मैं शाखा की जांच करता हूं:git checkout nameofnewbranch
जेफ मैटसन

आपके सवाल का ans जाँच /programming/1072261/push-and-pull-branches-in-git/47780374#47780374
Rizo


6
git fetch origin discover:discover && git checkout discover
गायन वेराकुत्ती

जवाबों:


3056

आपको एक स्थानीय शाखा बनाने की आवश्यकता है जो एक दूरस्थ शाखा को ट्रैक करती है। निम्नलिखित कमांड daves_branch नाम की एक स्थानीय शाखा बनाएगी , जो दूरस्थ शाखा उत्पत्ति / daves_branch पर नज़र रखेगी । जब आप अपने परिवर्तनों को आगे बढ़ाते हैं तो दूरस्थ शाखा अपडेट हो जाएगी।

Git के अधिकांश हाल के संस्करणों के लिए:

git checkout --track origin/daves_branch

--trackइस मामले में git checkout -b [branch] [remotename]/[branch]जहां [रीमोटनेम] की उत्पत्ति के लिए आशुलिपि है और [शाखा] इस मामले में दो बार समान है, daves_branch है।

Git 1.5.6.5 के लिए आपको इसकी आवश्यकता थी:

git checkout --track -b daves_branch origin/daves_branch

Git 1.7.2.3 और उच्चतर के लिए, यह पर्याप्त है (यह पहले शुरू हो सकता है, लेकिन यह सबसे जल्द पुष्टि है जो मुझे जल्दी मिल सकती है):

git checkout daves_branch

ध्यान दें कि हाल ही में Git संस्करणों के साथ, यह कमांड एक स्थानीय शाखा नहीं बनाएगी और आपको 'अलग किए गए HEAD' स्थिति में डाल देगी। यदि आप एक स्थानीय शाखा चाहते हैं, तो --trackविकल्प का उपयोग करें ।

पूर्ण विवरण यहाँ हैं: 3.5 गिट ब्रांचिंग - दूरस्थ शाखाएँ, ट्रैकिंग शाखाएँ


133
"git fetch" यह सुनिश्चित करने के लिए कि आपका रेपो दूरस्थ संदर्भों के साथ अपडेट किया गया है और "git checkout --track मूल / खोज" पर्याप्त होना चाहिए। फिर आप उस शाखा और अपने परिवर्तनों के साथ रिमोट को सिंक करने के लिए "गिट पुश" के लिए प्रतिबद्ध हो सकते हैं।
राल्फ्थिनेंजा

33
मैंने यह कोशिश की और "घातक: गिट चेकआउट: अपडेटिंग पथ स्विचिंग शाखाओं के साथ असंगत है। क्या आपने 'अपस्ट्रीम / डेवलपमेंट' चेकआउट करने का इरादा किया है, जिसे कमिटेड के रूप में हल नहीं किया जा सकता है?"। क्या मुझसे कुछ गलत हो रही है?
नील बर्नवेल

42
इसके बजाय git 1.5.6.5 की जरूरत है: git checkout - tra -b origin / daves_branch
चार्ली

35
इसने मेरे लिए गड़बड़ कर दी, इसने मूल / <शाखा> नामक एक स्थानीय शाखा का निर्माण किया, जो अब दूरस्थ शाखा की उत्पत्ति / <शाखा> के लिए अस्पष्ट है और मैं नहीं जानता कि पागल स्थानीय शाखा से कैसे छुटकारा पाया जाए!
एलन मूर

24
आपको स्थानीय शाखा का नाम स्पष्ट रूप से जोड़ने की आवश्यकता है, अन्यथा git पूर्ण शाखा पथ के साथ एक नई स्थानीय शाखा बनाता है, जैसा कि @AlanMoore और @ derekmx271 ने ऊपर कहा है:git checkout -b --track daves_branch origin/daves_branch
माइक स्कॉट

961

मैं fetchबाद में इस्तेमाल किया है checkout...

git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>

... जहां <rbranch>दूरस्थ शाखा या स्रोत रेफ है और <lbranch>अभी तक मौजूद गैर-मौजूद स्थानीय शाखा या गंतव्य रेफरी है जिसे आप ट्रैक करना चाहते हैं और जिसे आप शायद दूरस्थ शाखा या स्रोत रेफ के रूप में नाम देना चाहते हैं। इसकी व्याख्या में विकल्पों के तहत बताया गया है <refspec>

यदि मैं दूरस्थ शाखा के पहले कुछ अक्षरों के बाद टैब करता हूं तो Git इतना स्मार्ट है कि यह पहला कमांड पूरा करता है । यही है, मुझे स्थानीय शाखा का नाम भी नहीं देना है, Git स्वचालित रूप से मेरे लिए दूरस्थ शाखा के नाम की प्रतिलिपि बनाता है। धन्यवाद Git!

इस तरह के स्टैक ओवरफ्लो पोस्ट में उत्तर के रूप में भी , यदि आप स्थानीय शाखा का नाम नहीं लेते हैं fetch, तब भी आप इसे तब बना सकते हैं जब आप -bध्वज का उपयोग करके इसकी जांच करेंगे । यही कारण है, git fetch <remote> <branch> इसके बाद से git checkout -b <branch> <remote>/<branch>मेरी प्रारंभिक जवाब के रूप में बिल्कुल वैसा ही करता है। और जाहिर है, यदि आपकी रिपॉजिटरी में केवल एक रिमोट है, तो आप बस इसके git checkout <branch>बाद कर सकते हैं fetchऔर यह आपके लिए एक स्थानीय शाखा बनाएगा। उदाहरण के लिए, आपने अभी एक रिपॉजिटरी को क्लोन किया है और रिमोट से अतिरिक्त शाखाओं की जांच करना चाहते हैं।

मेरा मानना ​​है कि fetchहो सकता है कि कुछ दस्तावेज़ीकरण को वर्बेटिम से कॉपी किया गया हो pull। विशेष रूप से विकल्पों<refspec> में अनुभाग समान है। हालांकि, मुझे विश्वास नहीं है कि कभी भी ऐसा होगा , ताकि यदि आप कोलोन के गंतव्य पक्ष को खाली छोड़ दें, तो कुछ भी नहीं करना चाहिएfetchmergefetch

नोट: जिसके git fetch <remote> <refspec>लिए कम है git fetch <remote> <refspec>:इसलिए कुछ भी नहीं करना चाहिए , लेकिन git fetch <remote> <tag>यह वही है git fetch <remote> <tag>:<tag>जो दूरस्थ <tag>रूप से स्थानीय रूप से कॉपी करना चाहिए ।

मुझे लगता है कि यह केवल सहायक है यदि आप स्थानीय रूप से एक दूरस्थ शाखा की प्रतिलिपि बनाना चाहते हैं, लेकिन जरूरी नहीं कि इसे तुरंत जांचें। अन्यथा, मैं अब स्वीकार किए गए उत्तर का उपयोग करूंगा , जिसे चेकआउट विवरण के पहले खंड में और बाद में स्पष्टीकरण के तहत विकल्प अनुभाग में विस्तार से समझाया गया है --track, क्योंकि यह एक-लाइनर है। खैर ... एक-लाइनर की तरह, क्योंकि आपको अभी भीgit fetch <remote> पहले भागना होगा ।

FYI करें: <refspecs>(स्रोत: गंतव्य) का क्रम दूरस्थ शाखाओं को हटाने के लिए विचित्र पूर्व Git 1.7 विधि बताता है । यही है, गंतव्य refspec में कुछ भी नहीं धक्का।


8
आप मान लेते हैं Git स्वतः पूर्णता सेटअप है। code
wor

2
इसने मेरे लिए रिमोट कोड को स्थानीय शाखा में लाने का काम किया। हालाँकि दूरस्थ शाखा को ट्रैक करने के लिए इसे मेरी स्थानीय शाखा नहीं मिली।
अकनोसिस

1
किसी कारण के लिए, git fetch remote branchमेरे लिए बिल्कुल भी एक शाखा प्रमुख नहीं जोड़ा गया था, हालांकि सभी रेफरी प्राप्त हुए, इसलिए जब मैंने स्वीकृत उत्तर में चरणों का पालन करने की कोशिश की, तो मुझे वह त्रुटि मिली pathspec did not match any file(s) known to git., लेकिन rbranch:lbranchदृष्टिकोण ने काम किया। दिलचस्प बात यह है कि इसने सभी टैग भी लिए जो एक ही उपसर्ग के साथ शुरू हुए, जैसे यह वाइल्डकार्ड ( rbranch*) है।
हरदिवस

3
Nit: git स्वतः पूर्ण नहीं करता है, यह bash शेल है जो इसे कर रहा है।
वैध

1
FWIW, मुझे लगता है कि इस उत्तर और स्वीकृत उत्तर के बीच का अंतर यह है कि यह आपको fetchकमांड करने के लिए कहता है । यह स्वीकार किए जाते हैं जवाब समझ में आता है, क्योंकि ओपी नोट करता है कि वह पहले से ही लाया था। कम से कम इस मुद्दे पर मैं भाग गया।
तेन 528

373

यदि आप एक नई दूरस्थ शाखा "चेकआउट" करने का प्रयास कर रहे हैं (जो केवल रिमोट पर ही मौजूद है, लेकिन स्थानीय रूप से मौजूद नहीं है), तो यहां वह है:

git fetch origin
git checkout --track origin/<remote_branch_name>

यह मानता है कि आप मूल से लाना चाहते हैं । यदि नहीं, तो मूल को अपने दूरस्थ नाम से बदलें ।


1
मेरे लिए काम किया, मैंने सही दूरस्थ शाखा नहीं लाई थी इसलिए स्वीकार किए गए उत्तर मेरे लिए भ्रामक संदेश के साथ असफल रहे। +1
नाथन हेंचि

आमतौर पर, मैं git fetch का उपयोग करता हूं, लेकिन बात यह है कि git लाने और git लाने के बीच अंतर क्या है?
पिंग वू

@PingWoo यह मानते हुए कि शाखा आप में बसता था लाने के लिए चाहते हैं मूल रिमोट, दोनों git fetchऔर git fetch remoteएक ही बात करेंगे। यदि आपको इसके अलावा किसी अन्य दूरस्थ से लाने की आवश्यकता है origin, तो आप इसका उपयोग कर सकते हैं git fetch <other_remote_name>। यह स्थिति अत्यधिक असामान्य है, बस पूर्णता के लिए यहां उल्लेख किया गया है।
paneer_tikka 10

1
मैं लगभग इन सभी समाधानों की कोशिश कर रहा पीसी के खिलाफ अपना सिर हिला रहा था। पता चला, मेरी शाखा के नाम में एक टाइपो था, मूर्खतापूर्ण हे।
देव येगो

126

दूरस्थ रूप से मौजूद myBranch की जांच करने के लिए और स्थानीय रूप से नहीं - मेरे लिए यह काम करता है:

git fetch --all
git checkout myBranch

मुझे यह संदेश मिला:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

1
दूसरे शब्दों में आपको लिखना नहीं है -t?
एंड्रयू सैम्यूल्सन

4
मुझे लगता है कि इस उत्तर में कोई त्रुटि है। मैंने मूल रूप से कमांड के बिना किया -tऔर मिला You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.क्योंकि उसी नाम की स्थानीय शाखा नहीं थी। मुझे -tठीक करने के लिए फिर से दौड़ना पड़ा ।
stanri

1
इसने मेरे लिए अच्छा काम किया - मेरे सहयोगी ने एक नई दूरस्थ शाखा जोड़ी थी जिसे मैं अपने स्थानीय रेपो में जोड़ना चाहता था। मैं लाता रहा लेकिन स्थानीय रूप से प्रदर्शित होने वाली नई शाखा को नहीं देखा। एहसास नहीं था कि मैं checkoutइसे बनाने के लिए बस चला सकता हूं । धन्यवाद!
स्किविद्रेथ

2
गिट संस्करणों पर निर्भर करता है। नवीनतम संस्करण, जैसा कि यहां कहा गया है, केवल git चेकआउट की आवश्यकता है <मूल पर शाखा का नाम>। सेम-
नेम लॉकल

--allयह एक अच्छा विचार नहीं है, क्योंकि यह हर फाइल को हर शाखा पर डाउनलोड करेगा। इसमें अधिक समय और स्थान लगेगा। शाखा नाम के साथ विशिष्ट होना बेहतर है और इस
हनी

53

का प्रयोग करें git branch -a(दोनों स्थानीय और दूरस्थ शाखाओं) या git branch -r(केवल दूरस्थ शाखाओं) सभी रिमोट और उनके शाखाओं को देखने के लिए। फिर आप git checkout -t remotes/repo/branchरिमोट को कर सकते हैं और एक स्थानीय शाखा बना सकते हैं।

उस रिमोट के लिए सभी रेफ और टैग देखने के लिए git-ls-Remote कमांड भी है।


git checkout remotes/repo/branchएक चेकस्पेस के लिए गिट चेकआउट बनाता है, न कि रिमोट रेपो।
एरिन

1
हां, क्या रिमोट रेपो पर शाखा की जांच करना भी संभव है? जाहिर है (या शायद यह इतना स्पष्ट नहीं था), रीमोट को पहले लाया जाता है ताकि आप उन्हें स्थानीय रूप से लें। Git book का उन पर एक अच्छा खंड है: git-scm.com/book/en/Git-Branching-Remote-Branches
Daniel

43

शीर्षक और प्रश्न भ्रमित हैं:

  • गिट्ट दूरस्थ शाखा
  • मेरे सहयोगी उस शाखा को विशेष रूप से कैसे खींच सकते हैं।

यदि सवाल है, तो मुझे काम करने के लिए एक दूरस्थ शाखा कैसे मिल सकती है, या मैं एक दूरस्थ शाखा की जांच कैसे कर सकता हूं? , एक सरल समाधान है:

Git (> = 1.6.6) के साथ आप उपयोग करने में सक्षम हैं:

git checkout <branch_name>

यदि स्थानीय <branch_name>नहीं मिला है, लेकिन एक मिलान नाम के साथ ठीक एक रिमोट में एक ट्रैकिंग शाखा मौजूद है, तो इसे इसके बराबर मानें:

git checkout -b <branch_name> --track <remote>/<branch_name>

Git चेकआउट के लिए प्रलेखन देखें

अपने दोस्त के लिए:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

धन्यवाद गिलौम! मैंने सिर्फ इस कमांड का इस्तेमाल किया और इसके बारे में एक पोस्ट लिखी जिसमें मेरा सटीक मामला दर्शाया गया है: leniel.net/2014/05/05/…
लेनियल मैककैफरी

<! - git चेकआउट <रिमोट-ब्रांच-नेम> -> उम्मीद के मुताबिक काम करता है, धन्यवाद गिलियूम!
सचिदानंद नाइक

36

इसे करने का सबसे आसान तरीका, कम से कम मेरे लिए:

git fetch origin <branchName> # Will fetch the branch locally
git checkout <branchName> # To move to that branch

1
अन्य शाखाओं को नहीं लाता है
बेंजामिन हारल

7
@BenjaminHarel का कहना है कि "सभी शाखाओं को नहीं" एक दूरस्थ शाखा प्राप्त करें। इसके लिए इसका अनुसरण करना आपके लिए उपयोगी हो सकता है। stackoverflow.com/questions/10312521/…
जेम्स रोशब्रून

2
इस fetchकमांड का उपयोग करने के बाद आवश्यक शाखा स्थानीय मशीन पर उपलब्ध होगी। git checkout -b 'your_branch' origin/'remote branch'इस शाखा की जाँच करना आवश्यक है।
अभिजीत

30

उपयोग:

git checkout -b serverfix origin/serverfix

यह एक सामान्य पर्याप्त ऑपरेशन है जो गिट --trackशॉर्टहैंड प्रदान करता है :

git checkout --track origin/serverfix

वास्तव में, यह इतना सामान्य है कि उस शॉर्टकट का एक शॉर्टकट भी है। यदि आप जिस शाखा का नाम चेकआउट करने की कोशिश कर रहे हैं, वह मौजूद नहीं है और (b) केवल एक रिमोट पर एक नाम से मेल खाता है, तो Git आपके लिए एक ट्रैकिंग शाखा बनाएगा:

git checkout serverfix

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

git checkout -b sf origin/serverfix

अब, आपकी स्थानीय शाखा sfअपने आप खींच लेगी origin/serverfix

स्रोत: प्रो गेट, दूसरा संस्करण , स्कॉट चाकोन और बेन स्ट्रब द्वारा लिखित (पठनीयता के लिए कटौती)


वे शॉर्टहैंड एक सबक थे
जेड। खुल्ला


18

रिमोट पर मौजूद एक शाखा लाने के लिए, सबसे सरल तरीका है:

git fetch origin branchName
git checkout branchName

आप देख सकते हैं कि यह पहले से ही रिमोट पर मौजूद है:

git branch -r

यह आपके स्थानीय को दूरस्थ शाखा लाएगा और स्वचालित रूप से दूरस्थ को ट्रैक करेगा।


2
इस प्रश्न का अधिक उत्थान कैसे नहीं होता है? मैं गलत हो सकता है, लेकिन यह यकीन है कि इस चाल को करने के लिए लग रहा था, एक शाखा निकाली जो मेरे पास रिमोट से स्थानीय नहीं थी ...
निकोलस पीटरसन

15

मुझे क्या मदद मिली

1) सभी उपलब्ध दूरस्थ शाखाओं को देखने के लिए (उदाहरण के लिए 'रिमोट-शाखा-नाम')

git branch -r

2) रिमोट ब्रांच नाम का उपयोग करके एक स्थानीय शाखा बनाएं

git fetch && git checkout 'remote-branch-name'

1
जब आप git pushकिसी अन्य तर्क के बिना कमांड चलाते हैं तो क्या होता है? क्या स्थानीय शाखा नाम से remote-branch-nameस्वचालित रूप से जुड़ी (ट्रैकिंग) से संबंधित है जिसे दूरस्थ शाखा नाम दिया गया है origin/remote-branch-name। या क्या आपको चलाने की जरूरत हैgit push -u origin remote-branch-name
पेट्स

1
यह HEAD अलग राज्य का कारण होगा
अकिन ह्वेन

15

आप दूरस्थ शाखा को एक शॉट में भी प्राप्त और चेक कर सकते हैं:

git fetch && git checkout the-branch-name


13

मैंने लिखा

git checkout <branch_name>

और मिला

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'

git चेकआउट प्रलेखन से: यदि <Branch_name> नहीं मिला है, लेकिन एक मिलान नाम के साथ ठीक एक रिमोट में एक ट्रैकिंग शाखा मौजूद है, तो इसके बराबर का इलाज करें:git checkout -b <branch_name> --track <remote>/<branch_name>
Guillaume Vincent

11

कई बार आपसे पूछा जाता है कि आप मास्टर ब्रांच से फिड न करें और केवल रिमोट ब्रांच का काम करें (जैसा कि मुझसे पूछा गया)। तो आप सभी की जरूरत है दूरस्थ शाखा है।

तो अकेले (गुरु के बिना) दूरस्थ शाखा को क्लोन करने के लिए, ऐसा करें

git clone url --branch remote_branch_name

जहाँ, Remote_branch_name दूरस्थ शाखा का नाम है

उदाहरण के लिए,

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

यह सुनिश्चित करेगा कि आप दूरस्थ शाखा को दूरस्थ शाखा के नाम से अपनी स्थानीय शाखा में क्लोन कर सकते हैं।

अब यदि आप अपना कोड बनाते हैं और पुश करते हैं, तो कोड अकेले उस शाखा में जमा हो जाएगा।


संबंधित: मैं Git में एकल शाखा कैसे क्लोन कर सकता हूं? - "जीआईटी 1.7.10 (अप्रैल 2012) वास्तव में आपको केवल एक शाखा का क्लोन बनाने की अनुमति देता है:"
पीटर मोर्टेंसन

11

[शीघ्र जवाब]

कई विकल्प हैं, और मेरे पसंदीदा हैं:

- वैकल्पिक 1:

git fetch --all
git checkout YourBranch

इस विकल्प का उपयोग करके एक शाखा का उपयोग करना जो दूर से मौजूद है, लेकिन आपके स्थानीय में नहीं।

- वैकल्पिक 2:

git checkout -b 'YourBranch' origin/'YourRemote'

शायद, यह सबसे सरल तरीका है।


9

मान लीजिए कि आपका रिमोट git@xyz.git है और आप इसकी random_branch शाखा चाहते हैं। प्रक्रिया इस प्रकार होनी चाहिए:

  1. सबसे पहले अपने रीमोट्स की सूची को देखें

    git remote -v

  2. यदि आपके पास उपरोक्त कमांड के आउटपुट में git@xyz.it रिमोट नहीं है, तो आप इसे जोड़ देंगे

    git remote add xyz git@xyz.git

  3. अब आप उस रिमोट की सामग्री को प्राप्त कर सकते हैं

    git fetch xyz

  4. अब उस रिमोट की ब्रांच को चेकआउट करें

    git checkout -b my_copy_random_branch xyz/random_branch

  5. द्वारा शाखा सूची की जाँच करें

    git branch -a

स्थानीय शाखा my_copy_random_branch आपके रिमोट की random_branch शाखा पर नज़र रखने वाली होगी।



7

git fetch && git checkout <your friend's branch name> चाल चलनी चाहिए


7

मैं आपको अपने स्थानीय को सभी दूरस्थ शाखाओं को लाने और अपने वांछित नव निर्मित स्थानीय शाखा में स्विच करने के लिए एक-लाइनर कमांड देना चाहता हूं :

git fetch && git checkout discover

उपरोक्त कमांड चलाने के बाद आपको नीचे संदेश मिलेगा:

Switched to a new branch 'discover'
Branch discover set up to track remote branch discover from origin.

पहली पंक्ति में कहा गया है कि एक नई शाखा में बदल गया - नया क्यों? यह पहले से ही रिमोट में है!

लेकिन वास्तव में आपको इसे स्थानीय स्तर पर भी बनाना होगा। शाखा दूरस्थ सूचकांक से ली गई है और आपके लिए स्थानीय रूप से बनाई गई है।

यहां discoverएक नई शाखा है जो आपकी रिपॉजिटरी की रिमोट शाखा से बनाई गई है discover

लेकिन दूसरी पंक्ति पहले वाले से अधिक जानकारी देती है जो हमें बताती है कि:

हमारी शाखा को इसी नाम से दूरस्थ शाखा को ट्रैक करने के लिए स्थापित किया गया है ।

हालांकि git fetch सभी शाखाओं को स्थानीय में लाया जाता है। लेकिन अगर आप इसके git branchपीछे भागते हैं, तो आप masterस्थानीय में केवल शाखा देखेंगे । क्यों ?

क्योंकि आपके पास रिमोट की प्रत्येक शाखा के लिए आपको इसे स्थानीय रूप से भी बनाना होगा, इसे ट्रैक करने के लिए जैसा git checkout <branchname>कि हमने उपरोक्त उदाहरण में किया है।

git checkoutकमांड चलाने के बाद आप चला सकते हैं git branch, और अब आप दोनों शाखा देख सकते हैं:

  1. मास्टर और 2. आपकी स्थानीय सूची में खोज।

7

यदि आप सभी दूरस्थ शाखाओं को लाना चाहते हैं, तो कृपया टाइप करें:

git fetch --all

5

बस कोशिश करें:

git pull origin your_branch_name

2
रिज़ो, गिट पुल ओरिजिन ब्रांच_नाम सबसे अच्छा समाधान होना चाहिए। आप एकमात्र व्यक्ति हैं जिन्होंने इसे एक समाधान के रूप में पोस्ट किया और यह मेरे लिए काम किया। यह काम करता है क्योंकि यह मास्टर शाखा के साथ आपकी शाखा को अपडेट करेगा। सरल और सरल।
इयान पोस्टन फ्रामर

3
इसके साथ समस्या यह है कि यह उस दूरस्थ शाखा को आपकी CURRENT शाखा के साथ मिलाने का प्रयास करेगा, जो दूरस्थ नहीं है (क्योंकि यह आपके स्थानीय रेपो के लिए नया है)
Z. खुल्ला

यह आपकी वर्तमान शाखा में विलीन हो जाएगा।
ईम जी

4

यदि आपके पास एक रिपॉजिटरी है, जिसके साथ क्लोन किया गया था, --depth 1तो सूचीबद्ध की गई कई कमांड काम नहीं करेगी। उदाहरण के लिए, यहां देखें

% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
 * branch            other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%

इस मामले में मैं रिपॉजिटरी को पुनः प्राप्त करूंगा, लेकिन शायद अन्य तकनीकें भी हैं जैसे git उथले क्लोन (क्लोन - depth) को दूरस्थ शाखाएँ याद आती हैं


3

यदि आप पहले से ही अपनी दूरस्थ शाखा को इस तरह से जानते हैं ...

git remote
=> One
=> Two

और आपको पता है कि शाखा का नाम जिसे आप चेकआउट करना चाहते हैं, उदाहरण के लिए, br1.2.3.4 , फिर करें

git fetch One
=> returns all meta data of remote, that is, the branch name in question.

जो कुछ बचा है वह शाखा की जांच करना है

git checkout br.1.2.3.4

फिर किसी भी नई शाखा को बंद कर दें।


3

चरण इस प्रकार हैं;

  1. git fetch originया git fetch --all, यह आपके स्थानीय के लिए सभी दूरस्थ शाखाओं को लाएगा और फिर यह दूसरा विकल्प है जिसके साथ आप प्रक्रिया कर सकते हैं।

  2. git checkout --track origin/<The_remote_branch you want to switch over>

फिर इस शाखा पर काम करें और आप यह सत्यापित कर सकते हैं कि आप उस शाखा पर हैं या नहीं

git branch

यह वर्तमान में आपके द्वारा प्रदर्शित शाखा को प्रदर्शित करता है।



2

अपनी .git/configफ़ाइल की जाँच करें , विशेष रूप से उस रिमोट के लिए लाने पर जो ट्रैकिंग मौजूद है ।

[remote "randomRemote"]
    url = git@github.com:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

यदि यह heads/*इंगित करता है randomRemote/*, जब आप चलाते हैं git fetch randomRemote, तो यह सभी शाखाओं को लाएगा।

तब आप बस उस शाखा की जांच कर सकते हैं।

अन्यथा,

  1. इसका उपयोग करके आपको दूरस्थ शाखाओं को ट्रैकिंग में जोड़ना होगा। .git/configइसे चलाने के बाद अपनी जाँच करें । तुम समझ जाअोगे।

    git remote set-branches --add randomRemote randomBranch
    
  2. भागो git fetch randomRemote। यह दूरस्थ शाखा लाएगा।

  3. अब आप दौड़ सकते हैं git checkout randomBranch


1

आप अपनी शाखाओं को अलग रखने के लिए 'गिट पुल' का उपयोग करते हैं। मैं मदद करने के लिए वास्तविक रिपॉजिटरी और शाखा नामों का उपयोग करूंगा क्योंकि ran lbranch ’और 'rbranch’ को समझना कठिन है।

चलो उपयोग करें:

  • myteam.unfuddle.com = रिमोट गिट सर्वर
  • tlc = अनुचित परियोजना खाता जहाँ रिपॉजिटरी मौजूद है
  • daves_branch = दूरस्थ शाखा का नाम

    आप, या कोई भी सहयोगी, इसे केवल अपनी शाखा खींचने के लिए चला सकते हैं, चाहे कितनी भी शाखाएँ हों:

    git init
    git pull git@myteam.unfuddle.com:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
    

  • 0

    एक साधारण कमांड, git checkout remote_branch_nameआपको एक स्थानीय शाखा बनाने में मदद करेगी जिसमें दूरस्थ शाखा में सभी परिवर्तन हैं।


    -2
    git checkout -b branch_name
    git pull remote_name branch_name
    

    3
    हालांकि यह स्निपेट प्रश्न का उत्तर दे सकता है, लेकिन यह बेहतर है कि जो कुछ करता है उसके बारे में कुछ स्पष्टीकरण शामिल करें और यह पहले से ही यहां बहुत बड़ी संख्या में उत्तर से कैसे भिन्न होता है।
    डेव्यूडेवेव

    2
    मुझे व्यक्तिगत रूप से यह विकल्प पसंद नहीं है। क्योंकि यदि आप मास्टर से एक नई शाखा बना रहे हैं और फिर दूरस्थ शाखा से डेटा खींच रहे हैं, तो दूरस्थ शाखा मास्टर के समान पृष्ठ पर नहीं हो सकती है और न ही कुछ अनावश्यक कोड अपडेट आमंत्रित कर सकती है
    zeetit

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