सवाल एक मौजूदा गिट शाखा को रिमोट शाखा ट्रैक करें?


मुझे पता है कि रिमोट शाखाओं को ट्रैक करने वाली एक नई शाखा कैसे बनाई जाए, लेकिन मैं एक मौजूदा शाखा को रिमोट शाखा कैसे ट्रैक करूं?

मुझे पता है कि मैं सिर्फ संपादित कर सकता हूं .git/config फ़ाइल, लेकिन ऐसा लगता है कि एक आसान तरीका होना चाहिए।


3080
2018-02-06 15:14


मूल


जैसा कि नीचे बताया गया है, मौजूदा शाखा के लिए, आप इसका उपयोग कर सकते हैं git push -u origin branch-name। - Zags
सन्दर्भ के लिए, git branch प्रलेखन।
यदि स्थानीय शाखा वर्तमान शाखा है, और स्थानीय शाखा पहले से ही रिमोट को ट्रैक नहीं कर रही है, git pull ट्रैकिंग जानकारी सेट करने के लिए अक्सर उचित आदेश के बारे में उपयोगी संदेश प्रदान करेंगे - billrichards
यह परेशान है जब कोई गिट सीखने के लिए गिट सीखने के लिए एक लिंक दिखा रहा है। यह दस्तावेज लोगों के लिए लिखा गया प्रतीत होता है पहले से पता है कि वे गिट के साथ क्या कर रहे हैं। - Felipe Alvarez
गिट 2.10 के रूप में आपको पहले स्थानीय शाखा में चेकआउट करना चाहिए और फिर ऐसा करना चाहिए git branch --set-upstream-to origin/<branch> - Mahdi Javaheri


जवाब:


एक शाखा को देखते हुए foo और एक रिमोट upstream:

गिट 1.8.0 के रूप में:

git branch -u upstream/foo

या, यदि स्थानीय शाखा foo वर्तमान शाखा नहीं है:

git branch -u upstream/foo foo

या, यदि आप लंबे आदेश टाइप करना चाहते हैं, तो ये उपर्युक्त दो के बराबर हैं:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

गिट 1.7.0 के रूप में:

git branch --set-upstream foo upstream/foo

टिप्पणियाँ:

उपरोक्त सभी आदेश स्थानीय शाखा का कारण बनेंगे foo दूरस्थ शाखा को ट्रैक करने के लिए foo रिमोट से upstream। पुराने (1.7.एक्स) वाक्यविन्यास को नए (1.8+) वाक्यविन्यास के पक्ष में बहिष्कृत किया गया है। नया वाक्यविन्यास अधिक सहज और याद रखने में आसान होना है।


यह भी देखें: मुझे हर समय 'सेट-अपस्ट्रीम' क्यों करने की ज़रूरत है?


3752
2018-02-18 03:06



रिमोट का नाम "अपस्ट्रीम" है? यानी डिफ़ॉल्ट रूप से सबसे अधिक "उत्पत्ति" कहेंगे? - Andrew Vit
@ एंड्रयू: हां। git branch --set-upstream master origin/master जब आप प्रारंभ में एक भंडार क्लोन करते हैं तो स्वचालित रूप से क्या किया जाता है इसके बराबर होगा। - Dan Moulding
एक संबंधित नोट पर, इसे अपने gitconfig में जोड़ना बहुत ही बढ़िया है: "[push] default = ट्रैकिंग" यह ऐसा कर देगा ताकि धक्का उसी स्थान पर जायेगा जो खींचता है :) - jpswain
मुझे "घातक: वैध वस्तु नाम नहीं मिलता: 'मूल / मास्टर'।" - joachim
git push -u origin foo  के जरिए - Cotton


आप निम्नलिखित कर सकते हैं (माना जाता है कि आप मास्टर पर चेक आउट हैं और रिमोट ब्रांच मास्टर को धक्का देना चाहते हैं):

यदि आपके पास पहले से नहीं है तो 'रिमोट' सेट अप करें

git remote add origin ssh://...

अब ट्रैक करने के लिए मास्टर को कॉन्फ़िगर करें:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

और धक्का:

git push origin master

206
2018-03-09 08:50



यह वास्तव में धक्का में रिमोट और शाखा की आवश्यकता है? मेरा मतलब है, आपको केवल इसकी आवश्यकता है यदि आपकी चेक आउट शाखा वह नहीं है जिसे आप धक्का देना चाहते हैं, है ना? - Doppelganger
हां - लेकिन स्मृति से आपको पहले पुश के लिए स्पष्ट होना आवश्यक हो सकता है। आसानी से पाठ्यक्रम का परीक्षण किया जा सकता है ... :) - Paul Hedderly
+1 यह विंडोज उपयोगकर्ताओं के लिए उत्तर है जो msysgit "पूर्वावलोकन" के साथ अटक गए हैं जो पूर्व 1.8 है। उसके लिए धन्यवाद। - John
यह एकमात्र उत्तर है जो मेरे लिए काम करता है। जब मैंने स्वीकृत उत्तर की कोशिश की, तो मौजूदा शाखा के लिए अपस्ट्रीम रिमोट सेट करने के लिए, मुझे मिला: error: the requested upstream branch 'upstream/master' does not exist। - Steve K
@SteveK सबसे अधिक संभावना है क्योंकि आपके अपस्ट्रीम को बुलाया जाता है origin और नहीं upstream। - umläute


मैं इसे धक्का देने के दुष्प्रभाव के रूप में करता हूं -u के रूप में विकल्प

$ git push -u origin branch-name

बराबर लंबा विकल्प है --set-upstream

git-branch आदेश भी समझता है --set-upstream, लेकिन इसका उपयोग भ्रमित हो सकता है। संस्करण 1.8.0 इंटरफ़ेस को संशोधित करता है।

git branch --set-upstream एक बहिष्कृत भविष्य में हटा दिया जा सकता है और हटा दिया जा सकता है। git branch [-u|--set-upstream-to] तर्क के एक saner आदेश के साथ पेश किया गया है।

...

यह कहने के लिए मोहक था git branch --set-upstream origin/master, लेकिन यह वर्तमान में चेक आउट शाखा के साथ एकीकृत करने के लिए स्थानीय शाखा "मूल / मास्टर" की व्यवस्था करने के लिए गिट को बताता है, जो कि उपयोगकर्ता के लिए अत्यधिक संभावना नहीं है। विकल्प बहिष्कृत है; नया उपयोग करें --set-upstream-to (एक छोटी और मीठी के साथ -u) इसके बजाए विकल्प।

मान लें कि आपके पास स्थानीय है foo शाखा और चाहते हैं कि यह शाखा को उसी नाम से उसका अपस्ट्रीम के रूप में पेश करे। इसके साथ ऐसा करें

$ git branch foo
$ git branch --set-upstream-to=origin/foo

या केवल

$ git branch --set-upstream-to=origin/foo foo

130
2017-10-02 16:24



यह एक बेहतर समाधान आईएमओ है - Nils_e


आपको मिल सकता है git_remote_branch उपकरण उपयोगी है। यह रिमोट शाखाओं को बनाने, प्रकाशित करने, हटाने, ट्रैकिंग और नाम बदलने के लिए सरल आदेश प्रदान करता है। एक अच्छी सुविधा यह है कि आप एक पूछ सकते हैं grb आदेश देने के लिए आदेश क्या गिट कमांड इसे निष्पादित करेगा।

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



है grb एक मानक आदेश? कौन सा पैकेज में उपलब्ध है? - Jaseem
जीआरबी एक रूबी मणि है जिसे समझाया जा सकता है उनके github - mcabrams
ओपी खुद गिट के बारे में सवाल पूछ रहा है। तो एक नया उपकरण पेश न करें शायद बेहतर होगा। - zeekvfu
जीआरबी मेरे मैकोज़ इंस्टॉलेशन पर गिट-रीबेस के लिए उपनाम है। मैंने यह नहीं किया :) - highmaintenance


असल में काम के स्वीकृत उत्तर के लिए:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



स्थानीय शाखा पहले से ही एक शाखा को ट्रैक कर रही थी, इसलिए हम मान सकते हैं कि रिमोट रेपो पहले से ही जोड़ा गया था। - Doppelganger
डोप्लर्जरेंजर: स्वीकार्य उत्तर पर जॉचिम की टिप्पणी देखें। वैसे भी धारणाएं आसानी से भिन्न होती हैं - यह चीजों को इतना दिलचस्प बनाता है;) - Hedgehog


मेरा मानना ​​है कि गिट 1.5.x जितनी जल्दी आप स्थानीय शाखा बना सकते हैं $BRANCH एक दूरस्थ शाखा को ट्रैक करें origin/$BRANCH, इस तरह।

मान लीजिये $BRANCH तथा origin/$BRANCH मौजूद है, और आपने वर्तमान में चेक आउट नहीं किया है $BRANCH (यदि आपके पास है तो स्विच करें), करें:

git branch -f --track $BRANCH origin/$BRANCH

यह पुनरुत्थान करता है $BRANCH एक ट्रैकिंग शाखा के रूप में। -f बावजूद निर्माण को मजबूर करता है $BRANCH पहले से मौजूद है --track वैकल्पिक है अगर सामान्य डिफ़ॉल्ट स्थान पर हैं (यानी, git-config पैरामीटर है branch.autosetupmerge सच हैं)।

नोट, अगर origin/$BRANCH अभी तक अस्तित्व में नहीं है, आप इसे अपने स्थानीय को दबाकर बना सकते हैं $BRANCH रिमोट रिपोजिटरी में:

git push origin $BRANCH

स्थानीय शाखा को एक ट्रैकिंग शाखा में बढ़ावा देने के लिए पिछले आदेश का पालन किया गया।


40
2017-07-28 09:33



git push origin $BRANCH मैं जो खोज रहा था वह था। - User
उपरोक्त वर्णित अपस्ट्रीम स्थापित करने सहित सभी प्रकार के समाधानों को आजमाने के बाद कुछ भी काम नहीं किया। मैं बस इतना करना चाहता था कि मेरी स्थानीय शाखा में रिमोट एक से नई प्रतिबद्धता खींचें और मैंने शुरुआत में ट्रैकिंग सेट नहीं की थी। आदेश git branch -f --track $BRANCH origin/$BRANCH उसने चाल चली। - DemitryT


1- अपने स्थानीय मेटा-डेटा का उपयोग करके अपडेट करें: गिट fetch - कुल मिलाकर

enter image description here

2- अपने रिमोट और स्थानीय शाखाओं का उपयोग करके दिखाएं: गिट शाखा-ए , निम्नलिखित स्क्रीनशॉट देखें

enter image description here

3- लक्षित शाखा पर स्विच करें, जिसे आप रिमोट से जोड़ना चाहते हैं: का उपयोग कर

गिट चेकआउट शाखा नाम

उदाहरण :

enter image description here 

4- अपनी स्थानीय शाखा को रिमोट शाखा से लिंक करके:

गिट शाखा - सेट-अपस्ट्रीम-टू नाम ओफ्रेमोट ब्रंच

एनबी: nameOfRemoteBranch : चरण 2 "गिट शाखा-आर" के आउटपुट से प्रतिलिपि बनाने के लिए

उपयोग का उदाहरण:

enter image description here


28
2018-06-06 14:21



इसने काम कर दिया। धन्यवाद - Rahal Kanishka
अधिक आसान और सरल जवाब। - vibs2006


सुनिश्चित करें कि आप चलाते हैं:

git config push.default tracking

मुसीबत मुक्त करने में सक्षम होने के लिए


22
2017-08-29 21:38



यह सुविधाजनक हो सकता है। हालांकि, हम ध्यान दे सकते हैं कि git-config(1) मैनुअल पेज, tracking का पर्याय नामित किया गया है upstream। - FooF


संपादन .git/config शायद सबसे आसान और सबसे तेज़ तरीका है। रिमोट शाखाओं को संभालने के लिए गिट कमांड यही है, वैसे भी।

यदि आप हाथ से फ़ाइल के साथ मक नहीं करना चाहते हैं (और यह करना मुश्किल नहीं है), तो आप हमेशा उपयोग कर सकते हैं git config ऐसा करने के लिए ... लेकिन फिर, यह सिर्फ संपादित करने जा रहा है .git/config फ़ाइल, वैसे भी।

निश्चित रूप से, उपयोग करते समय रिमोट शाखा को स्वचालित रूप से ट्रैक करने के तरीके हैं git checkout (पास करके --track ध्वज, उदाहरण के लिए), लेकिन इन आदेशों के साथ काम करते हैं नया शाखाएं, मौजूदा नहीं।


21
2018-02-06 15:17





बहुत कम में

git branch --set-upstream yourLocalBranchName origin/develop

यह तुम्हारा बना देगा yourLocalBranchName नामक रिमोट शाखा को ट्रैक करें develop


16
2017-10-09 07:19



@ क्विंसी चेक ग्रेग का जवाब - उपयोग git push -u origin branch (या --set-upstream-to) बजाय - Tobias Kienzler
@MadNik, बीच क्या अंतर है --set-upstream तथा --track? मुझे समझ में नहीं आता कि मुझे एक दूसरे का उपयोग क्यों करना चाहिए। - A-B-B


1.6.x के लिए, यह का उपयोग कर किया जा सकता है git_remote_branch उपकरण:

grb track foo upstream

इससे गिट बनाने का कारण बन जाएगा foo धावन पथ upstream/foo


14
2018-06-01 02:23