वर्तमान शाखा के लिए कोई ट्रैकिंग जानकारी नहीं है


579

मैं अपेक्षाकृत कम समय से जीथब का उपयोग कर रहा हूं, और मैंने हमेशा क्लाइंट को कमिट और पुल करने के लिए उपयोग किया है। मैंने कल इसे गिट बैश से आजमाने का फैसला किया, और मैंने सफलतापूर्वक एक नया रेपो और प्रतिबद्ध फाइलें बनाईं।

आज मैंने दूसरे कंप्यूटर से रिपॉजिटरी में बदलाव किए, मैंने बदलाव किए हैं और अब मैं घर वापस आ गया हूं और git pullअपने स्थानीय संस्करण को अपडेट करने के लिए प्रदर्शन किया है और मुझे यह मिल गया है:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream develop origin/<branch>

इस रेपो का एकमात्र योगदानकर्ता मैं हूं और इसकी कोई शाखाएं (सिर्फ एक मास्टर) नहीं हैं। मैं खिड़कियों पर हूँ और मैंने गिट बैश से पुल का प्रदर्शन किया है:

यहाँ छवि विवरण दर्ज करें

गिट स्थिति:

$ git status
# On branch master
nothing to commit, working directory clean

गिट शाखा:

$ git branch
* master

मैं क्या गलत कर रहा हूं?


ठीक है, कैसे के बारे में git remote -v? वो क्या बोलता है या उसका मतलब क्या है?
कुरकुरा


यदि आप क्लोन रेपो निर्देशिका में सीडी नहीं डालते हैं, तो आपको वह त्रुटि भी मिल सकती है git pull
विक्टोरिया स्टुअर्ट

Git 2.24, Q4 2019 के साथ git pull --set-upstream-to=origin/master masterसंभव है। देखें नीचे मेरा उत्तर
VonC

जवाबों:


948

आप निर्दिष्ट कर सकते हैं कि आप किस शाखा को खींचना चाहते हैं:

git pull origin master

या आप इसे स्थापित कर सकते हैं ताकि आपकी स्थानीय मास्टर शाखा अपस्ट्रीम के रूप में जीथूब मास्टर शाखा को ट्रैक करे:

git branch --set-upstream-to=origin/master master
git pull

जब आप एक रिपॉजिटरी (केवल डिफ़ॉल्ट ब्रांच के लिए) क्लोन करते हैं, तो यह ब्रांच ट्रैकिंग आपके लिए स्वचालित रूप से सेट हो जाती है, लेकिन यदि आप किसी मौजूदा रिपॉजिटरी में रिमोट जोड़ते हैं तो आपको ट्रैकिंग खुद सेट करनी होगी। शुक्र है, git द्वारा दी गई सलाह यह याद रखना आसान बनाती है कि कैसे करना है।


3
उत्तम! इसने काम कर दिया। तो क्या हुआ कि डिफ़ॉल्ट "गिट पुल" के लिए कोई "डिफ़ॉल्ट शाखा" नहीं थी? इसीलिए त्रुटि थी?
valerio0999

16
-सेट-अपस्ट्रीम को जीआईटी 1.9.x में चित्रित किया गया है, जाहिरा तौर पर। आगे जाकर आप कुछ ऐसा उपयोग करना चाहते हैं git branch -u origin/master, मान लें कि आपने पहले ही मास्टर की जाँच कर ली है। यदि नहीं, git branch -u origin/master masterतो काम करेंगे।
बार्ट Read

5
@BartRead ने नए क्लीयर --set-upstream-to=सिंटैक्स का उपयोग करने के लिए इसे अपडेट किया । (जो के लिए प्रतिस्थापन है --set-upstream)
ComputerDruid

61
यह एक खेदजनक स्थिति की तरह लगता है - क्या हमें वास्तव में प्रत्येक शाखा के लिए मैन्युअल रूप से सेट करने की आवश्यकता है? हम मूल को केवल डिफ़ॉल्ट रिमोट के रूप में सेट क्यों नहीं कर सकते हैं और फिर उसी नाम से मूल पर शाखा के लिए हर धक्का / पुल डिफ़ॉल्ट है? क्या यह इतना कठिन है?
अलेक्जेंडर मिल्स

4
आह, मेरे लिए यहाँ महत्वपूर्ण बात यह थी कि यदि आप एक रिमोट छोड़ते हैं और फिर से बनाते हैं तो जो ट्रैकिंग मूल द्वारा स्थापित की गई थी fetchवह खो गई है। इसलिए इसे फिर से स्थापित करने की आवश्यकता है। :)
बेन

42

देखें: git चेकआउट टैग, git पुल शाखा में विफल रहता है

अगर मेरी तरह आपको हर समय यह करने की आवश्यकता है, तो आप अपनी .gitconfigफ़ाइल में निम्न जोड़कर इसे स्वचालित रूप से करने के लिए एक उपनाम सेट कर सकते हैं :

[alias]
    set-upstream = \
       !git branch \
           --set-upstream-to=origin/`git symbolic-ref --short HEAD`

जब आप संदेश देखें There is no tracking information..., चलाएं:

 git set-upstream
 git push

Https://zarino.co.uk/post/git-set-upstream/ के लिए धन्यवाद


1
यहां इसे .gitconfigएक पंक्ति में वैश्विक रूप से जोड़ने का एक तरीका है (तदनुसार स्थानीय या अन्य विन्यासों के लिए संशोधित किया जा सकता है):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
डैनी बुलिस

17

ComputerDruid का उत्तर बहुत अच्छा है, लेकिन मुझे नहीं लगता कि जब तक आप नहीं चाहते तब तक मैन्युअल रूप से सेट अप करना आवश्यक है। मैं यह जवाब जोड़ रहा हूं क्योंकि लोग सोच सकते हैं कि यह एक आवश्यक कदम है।

यह त्रुटि दूर हो जाएगी यदि आप उस रिमोट को निर्दिष्ट करते हैं जिसे आप नीचे की तरह खींचना चाहते हैं:

git pull origin master

ध्यान दें कि originरिमोट का नाम masterहै और शाखा का नाम है।


1) रिमोट का नाम कैसे चेक करें

git remote -v

2) कैसे देखें कि रिपॉजिटरी में कौन सी शाखाएँ उपलब्ध हैं।

git branch -r

1
मेरे लिए सबसे अच्छा जवाब, धन्यवाद!
बहमन.ए

7

मैं अक्सर इस सटीक संदेश में भाग लेता हूं क्योंकि मैं git checkout -b <feature-branch-name>पहले दूरस्थ शाखा बनाए बिना स्थानीय शाखाएं बनाता हूं ।

सभी कार्य समाप्त होने के बाद और स्थानीय रूप से यह फिक्स किया गया था git push -uकि रिमोट शाखा बनाई गई थी , मेरे सभी काम को धक्का दिया, और फिर मर्ज-अनुरोध URL।


1
इसके लायक होने के लिए, मुझे git push -u origin <my-feature-branch-name>दूरस्थ शाखा बनाने और अपने काम को आगे बढ़ाने के लिए दौड़ना पड़ा
Donnie C

6

मैं उपरोक्त उदाहरणों की कोशिश कर रहा था और एक अलग कंप्यूटर पर मेरे द्वारा बनाई गई (गैर-मास्टर) शाखा के साथ सिंक करने के लिए उन्हें प्राप्त नहीं कर सका। पृष्ठभूमि के लिए, मैंने कंप्यूटर A (git v 1.8) पर इस रिपॉजिटरी को बनाया और फिर रिपॉजिटरी को कंप्यूटर B (git 2.14) पर क्लोन किया। मैंने कंप बी पर अपने सभी परिवर्तन किए, लेकिन जब मैंने कंप्यूटर पर परिवर्तनों को खींचने की कोशिश की तो एआई ऐसा करने में असमर्थ था, वही उपरोक्त त्रुटि हो रही थी। उपरोक्त समाधानों के समान, मुझे करना था:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

थोड़ा अलग लेकिन उम्मीद है कि किसी की मदद करता है


इसने मेरे लिए काम किया; मैं एक गैर-मास्टर शाखा का भी उपयोग कर रहा था जिसे एक अलग कंप्यूटर पर सेट किया गया था। Git Bash I में इस कमांड का उपयोग करने के बाद मैं अपने परिवर्तन प्राप्त करने में सक्षम हो गया :)
Novastorm





1

मेरे साथ भी ऐसा ही हुआ जब मैंने एक नई git शाखा बनाई, जबकि इसे मूल में नहीं धकेला।

पहले उन दो पंक्तियों को निष्पादित करने का प्रयास करें:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

फिर:

git pull origin name_of_new_branch

यह अब ठीक होना चाहिए!


1

वर्तमान शाखा के कारण ऐसा होता है कि रिमोट पर शाखा की कोई ट्रैकिंग नहीं है। तो आप इसे 2 तरीकों से कर सकते हैं।

  1. विशिष्ट शाखा नाम के साथ खींचो

git पुल ओरिजिनल मास्टर

  1. या आप स्थानीय शाखा को ट्रैक करने के लिए विशिष्ट शाखा कर सकते हैं।

गिट शाखा --सेट-अपस्ट्रीम-टू = मूल /


0

गिट शाखा --सेट-अपस्ट्रीम-टू = मूल / मुख्य


2
यह आपके उत्तर के लिए कुछ स्पष्टीकरण जोड़ने में सहायक होता है, इसे और अधिक स्पष्ट और समझने योग्य बनाने के लिए। कृपया stackoverflow.com/help/how-to-answer पढ़ें ।
32cupo

1
@ 32cupo के बिंदु के अलावा, यह अनिवार्य रूप से पांच साल पुराने स्वीकृत उत्तर के समान है, लेकिन कम स्पष्टीकरण के साथ।
जेरेमी केन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.