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


133

मैंने एक गिट रिपॉजिटरी को क्लोन किया है और फिर एक टैग की जाँच की:

# git checkout 2.4.33 -b my_branch

यह ठीक है, लेकिन जब मैं git pullअपनी शाखा में चलने की कोशिश करता हूं, तो यह त्रुटि समाप्त हो जाती है:

वर्तमान शाखा के लिए कोई ट्रैकिंग जानकारी नहीं है। कृपया निर्दिष्ट करें कि आप किस शाखा के साथ विलय करना चाहते हैं। विवरण के लिए गिट-पुल (1) देखें

git pull <remote> <branch>

यदि आप इस शाखा के लिए ट्रैकिंग जानकारी सेट करना चाहते हैं, तो आप ऐसा कर सकते हैं:

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

मैं git pullकेवल मास्टर शाखा को अपडेट करना चाहता हूं और अपनी वर्तमान शाखा को अकेला छोड़ देता हूं (यह वैसे भी एक टैग है)। क्या ऐसा कुछ संभव है?

इसका कारण मुझे यह है कि मेरे पास एक स्वचालित स्क्रिप्ट है जो हमेशा रिपॉजिटरी को खींचती है और निश्चित रूप से त्रुटि के कारण विफल हो जाती है।


जवाबों:


114

संपादित करें: Git के नए संस्करणों के लिए, --set-upstream masterहटा दिया गया है, आपको --set-upstream-toइसके बजाय उपयोग करना चाहिए :

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

जैसा कि यह संकेत दिया गया है, आप बस चला सकते हैं:

git branch --set-upstream master origin/master

उसके बाद, आप बस git pullअपने कोड को अपडेट करने के लिए चला सकते हैं ।


5
इससे समस्या हल हो गई। लेकिन मुझे अभी भी समझना है कि मेरी मास्टर शाखा ने उत्पत्ति के संदर्भ को कैसे खो दिया। मैं एक शाखा पर था और किया git checkout master। मैं ऐसा नहीं कर सका git pullक्योंकि उत्पत्ति का संदर्भ खो गया था। अब यह काम कर रहा है। धन्यवाद!
एरियल

'गिट ब्रांच -सेट-अपस्ट्रीम-टू = ओरिजिन / मास्टर मास्टर my_branch' ने मेरे लिए काम किया
ब्लू क्लाउड्स

90

मेरे पास एक ही समस्या थी और इसे इस कमांड के साथ तय किया:

$ git push -u origin master

मदद फ़ाइल से -u मूल रूप से पुल के लिए डिफ़ॉल्ट सेट करता है:

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).

48

इन आदेशों का प्रयास करें:

git pull origin master
git push -u origin master

9

का उपयोग कर मास्टर शाखा पर वापस जाएँ

$ git checkout master

और फिर git pullऑपरेशन चलाएं

$ git pull origin/master

बाद में, आप अपने my_branchफिर से वापस स्विच कर सकते हैं ।


6
ठीक यही मैं बचने की कोशिश कर रहा हूं। मैं जानना चाहता था कि क्या ऐसा करने का कोई "आधिकारिक" तरीका है।
एल्स्को

5

@alesko : केवल शाखा अपडेट करने के लिए git pullचेकआउट के बाद ही ऐसा करना संभव नहीं है । क्योंकि आपके परिदृश्य में वर्तमान शाखा -> में भी विलय हो जाएगाmy_branchmaster
git pullmy_branch

@ साइमन : यह भी धक्का होगा। ऐसा क्यों है?

$ git branch -u origin/master
Branch master set up to track remote branch master from origin.

और डॉक्स की रिकॉर्डिंग:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.

4

पहले, सुनिश्चित करें कि आप सही शाखा पर हैं।
तब (केवल एक बार):

git branch --track

उसके बाद यह फिर से काम करता है:

git pull

4

आपके पास कई शाखाएं हो सकती हैं। और आपकी वर्तमान शाखा ने रिमोट में अपना अपस्ट्रीम सेट नहीं किया है।

इसे ठीक करने के लिए कदम:

git checkout branch_name
git branch --set-upstream-to=origin/remote_branch_name local_branch_name

जैसे

// this set upstream of local branch develop to remote branch  origin/develop,
git branch --set-upstream-to=origin/develop develop

ऐसा करने के बाद, जब आप ऐसा करते हैं git pull, तो यह निर्दिष्ट शाखा से खींचता है।


3

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

git pull origin master

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

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

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

-सेट-अपस्ट्रीम को जीआईटी 1.9.x में चित्रित किया गया है, जाहिरा तौर पर। आगे जाकर आप कुछ का उपयोग करना चाहेंगे

git branch -u origin/master

यह मानकर कि आपने पहले ही मास्टर की जाँच कर ली है। यदि नहीं, git branch -u origin/master masterतो काम करेंगे


2

इसे इस्तेमाल करे

git checkout master

git pull origin master

2
यह वास्तव में सवाल का जवाब नहीं दे रहा है। हालांकि यह भी स्वीकार नहीं किया गया कि उत्तर दिया गया शीर्ष मतदान इस पुराने प्रश्न के उत्तर के रूप में बहुत अधिक उपयुक्त है
fejese

1

आपको वर्तमान शाखा के लिए अपना ट्रैकिंग (अपस्ट्रीम) सेट करना होगा

git branch --set-upstream master origin/master

के बजाय पहले से ही पदावनत किया गया है कि आप उपयोग कर सकते हैं - ट्रेक ध्वज

git branch --track master origin/master

मुझे यह भी पसंद है कि डॉक्टर संदर्भ @casey नोटिस:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.

1

मेरे लिए क्या काम किया गया था: git Branch --set-upstream-to = origin master जब मैंने फिर से एक पुल किया तो मुझे केवल मास्टर से अपडेट मिला और चेतावनी चली गई।


1

अगर मेरी तरह आपको हर समय यह करने की आवश्यकता है, तो आप अपनी .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/ के लिए धन्यवाद


0

केवल अपडेट डाउनलोड करने के लिए:

git fetch origin master

हालाँकि, यह केवल एक संदर्भ को अद्यतन करता है जिसे कहा जाता है origin/master। अपने स्थानीय को अपडेट करने का सबसे अच्छा तरीका masterकिसी अन्य टिप्पणी में उल्लिखित चेकआउट / मर्ज होगा। यदि आप गारंटी दे सकते हैं कि आपका स्थानीयmaster ने मुख्य ट्रंक से विचलन नहीं origin/masterकिया है, तो आप अपने वर्तमान को नए बिंदु पर मैप करने के लिए उपयोग कर सकते हैं , लेकिन संभवत: नियमित आधार पर उपयोग करने के लिए यह सबसे अच्छा समाधान नहीं है ...git update-refmaster


0

यह आदेश हटा दिया गया है: git branch --set-upstream master origin/master

इसलिए, जब ट्रैकिंग सेट अप करने की कोशिश की जा रही है, तो यह वह कमांड है जो मेरे लिए काम करती है:

git branch --set-upstream-to=origin/master master
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.