GitHub पर बनाई गई एक नई दूरस्थ शाखा को ट्रैक करें


183

मुझे पहले से ही एक स्थानीय मास्टर शाखा मिल गई है, जो एक जीथब परियोजना की दूरस्थ मास्टर शाखा पर नज़र रख रही है। अब, मेरे एक सहयोगी ने उसी परियोजना में एक नई शाखा बनाई है, और मैं निम्नलिखित तदनुसार करना चाहता हूं:

  1. स्थानीय रूप से एक नई शाखा बनाएँ
  2. इस नई शाखा को नई बनाएँ दूरस्थ शाखा ट्रैक करें।

मुझे इसे कैसे ठीक से करना चाहिए?


2
git checkout --track -b <स्थानीय शाखा> <रिमोट> / <ट्रैक की गई शाखा> भी काम करता है।
विधायक

14
... या बस git checkout -t <remote>/<whatever>। यदि आपके पास केवल एक रिमोट-ट्रैकिंग शाखा है जो <whatever>आप में समाप्त हो सकती है , तो आप बस कर सकते हैं git checkout <whatever>और अनुमान लगा सकते हैं कि आपका क्या मतलब है।
मार्क लॉन्गेयर

जवाबों:


251
git fetch
git branch --track branch-name origin/branch-name

पहला आदेश सुनिश्चित करता है कि आपके पास स्थानीय रिपॉजिटरी में दूरस्थ शाखा है। दूसरी कमांड लोकल ब्रांच बनाती है जो रिमोट ब्रांच को ट्रैक करती है। यह मानता है कि आपका दूरस्थ नाम है originऔर शाखा का नाम है branch-name

--track विकल्प दूरस्थ शाखाओं के लिए डिफ़ॉल्ट रूप से सक्षम है और आप इसे छोड़ सकते हैं।


3
जब मैं ऐसा करता हूं, मुझे एक चेतावनी मिलती है: refname 'शाखा-नाम' अस्पष्ट है।
अल्ट्रासाउंड

19
यदि उस शाखा के नाम के साथ केवल एक दूरस्थ शाखा है, तो आप बस कर सकते हैं git checkout <branchname>और git स्वचालित रूप से इसकी जाँच करेगा और एक ट्रैकिंग शाखा सेटअप करेगा। इस टिप्पणी में @Mark Longair ने जो कहा, उसे बस फिर से दोहराना चाहते थे: stackoverflow.com/questions/11262703 …… ।
रयान वॉल्स

मेरी दूरस्थ शाखा का नाम है remotes/origin/develop? यह सिर्फ नहीं होना चाहिए origin/develop? क्या ये वही हैं?
ア ッ ク

2
मुझे करना था git fetch --all, अन्यथा नई शाखाओं को नहीं लाया जाएगा
mschrimpf

ग्रहण में यह कैसे करें? जब मैं उन लोगों के साथ किया जाता हूं cmd, तो ग्रहण नई शाखा का पता लगाता है?
डेकार्ड

31

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

git fetch
git checkout <remote-branch-name>

उदाहरण के लिए यदि आप लाते हैं और एक नई दूरस्थ ट्रैकिंग शाखा कहते हैं origin/feature/Main_Page, तो बस यह करें:

git checkout feature/Main_Page

यह दूरस्थ शाखा के समान नाम से एक स्थानीय शाखा बनाता है, जो उस दूरस्थ शाखा पर नज़र रखता है। यदि आपके पास एक ही शाखा के नाम के साथ कई रीमोट हैं, तो आप कम अस्पष्ट का उपयोग कर सकते हैं:

git checkout -t <remote>/<remote-branch-name>

यदि आप पहले से ही स्थानीय शाखा बना चुके हैं और इसे हटाना नहीं चाहते हैं, तो देखें कि आप मौजूदा गिट शाखा को दूरस्थ शाखा कैसे बनाते हैं?


1
git checkout 1.5-branch( remotes/upstream/1.5-branchआउटपुट में है git branch -a) परिणाम के परिणामस्वरूप error: pathspec '1.5-branch' did not match any file(s) known to git.इसे git checkout upstream/1.5-branchअलग किए गए HEAD में बदल दिया जाता है और कोई स्थानीय शाखा नहीं बनाई जाती है। मुझे लगता है कि उत्तर का यह हिस्सा केवल गलत है। यह git 2.4.3 के साथ है
Piotr Dobrogost

पहला कमांड मेरे लिए 1.9.3 में git के लिए काम करता है, यहां तक ​​कि अलग-अलग रीमोट के लिए भी। यह संभव है कि यह व्यवहार बदल गया है। आपके दूसरे आदेश का परिणाम वही होगा जो मैं उम्मीद कर रहा हूं। बिना -t, आप यह निर्दिष्ट नहीं कर रहे हैं कि आप रिमोट पर उस विशिष्ट संस्करण को देखने के अलावा कुछ भी करना चाहते हैं।
कोतोले

1
मैं @PiotrDobrogost के साथ सहमत हूं, मुझे विश्वास है कि आपका कथन "यह उसी नाम से एक स्थानीय शाखा बनाता है ..." गलत है। क्या करेंगे (जब इस तरह कहा जाता है) रिमोट पर प्रत्येक शाखा के लिए एक रिमोट ट्रैकिंग शाखा बनाते हैं । इसका मतलब है कि आपके स्थानीय रेपो नाम की एक शाखा <remote>/<branch>। एक दूरस्थ ट्रैकिंग शाखा केवल-पढ़ने के लिए है, यह दर्शाता है कि अंतिम ब्रांच में वह शाखा रिमोट पर कहां थी। checkoutउस शाखा रेफ पर कॉल करना आपको अलग-अलग HEAD मोड में डालता है, जैसा कि Piotr कहता है। ध्यान दें कि दूरस्थ शाखा को निर्दिष्ट करने से अवांछित दूरस्थ ट्रैकिंग शाखाएं बनाने से बचा जाता है।
स्कैन

2
एक बार और स्पष्ट होने के लिए: मैं कमांड का उपयोग करने का सुझाव दे रहा हूं git checkout feature-branch। मैं कमांड का उपयोग करने का सुझाव नहीं दे रहा हूं git checkout origin/feature-branch , जैसा कि आप दोनों ने इंगित किया है, जिसके परिणामस्वरूप एक बेदाग अलग सिर होगा।
22

बहुत सरल और बात करने के लिए। साइबरविन पर गिट 2.8.3 के साथ ठीक काम करता है।
फेलिप अल्वारेज़

29

सबसे पहले आपको रिमोट रिपॉजिटरी लाना होगा:

git fetch remoteName

अपनी इच्छित शाखा को ट्रैक करने के लिए आप नई शाखा बना सकते हैं और इसे सेट कर सकते हैं:

git checkout -b newLocalBranch remoteName/remoteBranch

आप अधिकतम निर्दिष्ट के रूप में "गिट चेकआउट-बी" के बजाय "गिट शाखा - ट्रैक" का उपयोग कर सकते हैं।

git branch --track newLocalBranch remoteName/remoteBranch

यदि आप checkout -bएक दूरस्थ शाखा का उपयोग प्रारंभिक बिंदु के रूप में करते हैं, तो यह वास्तव में उपयोग करने के लिए अनावश्यक है --track

5
इसके अलावा, जैसा कि इस टिप्पणी में बताया गया है , यदि आप बस करते हैं git checkout <branchname>, और एक ही नाम के साथ एक दूरस्थ शाखा है (आपके द्वारा किए जाने के बाद git fetch), तो स्थानीय शाखा स्वचालित रूप से दूरस्थ को ट्रैक करने के लिए स्थापित हो जाएगी।

9

जब शाखा कोई दूरस्थ शाखा नहीं है, तो आप अपनी स्थानीय शाखा को दूरस्थ तक पहुंचा सकते हैं।

git checkout master
git push origin master

या जब आपके पास देव शाखा हो

git checkout dev
git push origin dev

या जब दूरस्थ शाखा मौजूद हो

git branch dev -t origin/dev

दूरस्थ शाखा को आगे बढ़ाने के लिए कुछ अन्य पॉज़िबाइलाइट हैं।


फिर आप तीसरा विकल्प लेते हैं। जब दूरस्थ शाखा मौजूद होती है, तो आप एक स्थानीय शाखा बना सकते हैं और दूरस्थ शाखा को ट्रैक कर सकते हैं :) इसका अधिकतम और छोटे से संस्करण के समान है।
रेने होले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.