आपका कॉन्फ़िगरेशन दूरस्थ से <शाखा नाम> के साथ मर्ज करने के लिए निर्दिष्ट करता है, लेकिन ऐसा कोई भी रिफ़र नहीं किया गया था।


202

मुझे यह त्रुटि खींचने के लिए मिल रही है:

आपका कॉन्फ़िगरेशन दूरस्थ से रेफरी 'रेफ्स / हेड्स / फीचर / स्प्रिंट 4 / एबीसी-123-ब्रांच' के साथ विलय करने के लिए निर्दिष्ट करता है, लेकिन इस तरह के किसी भी रेफरी को नहीं लाया गया था।

यह त्रुटि किसी अन्य शाखा के लिए नहीं आ रही है।
इस शाखा के बारे में खास बात यह है कि यह दूसरी शाखा के पिछले प्रतिबद्ध से बनाई गई है।

मेरी कॉन्फ़िग फ़ाइल इस प्रकार है:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = <url here>
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "new-develop"]
    remote = origin
    merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
    remote = origin
    merge = refs/heads/feature/Sprint4/ABC-123-Branch

क्या आप मर्ज करने के लिए आपके द्वारा उपयोग की जा रही कमांड को साझा कर सकते हैं?
ढाका

1
यह समस्या तब हो सकती है जब दूरस्थ शाखा को हटा दिया गया हो। यह वास्तव में वहाँ है अगर डबल जाँच करें।
बेनी न्युगबॉएर

4
भविष्य के पाठक: यदि आप जानते हैं कि दूरस्थ शाखा मौजूद है, तो जांचें कि क्या आप मामले की अनदेखी कर रहे हैं या नहीं। मैंने एक दूरस्थ शाखा को ट्रैक करने के लिए एक स्थानीय शाखा की स्थापना की थी, लेकिन सभी निचले मामलों के अक्षरों में रिमोट का नाम टाइप किया। बस मूल / शाखा नाम के बजाय मूल / ब्रांचनाम को ट्रैक करने के लिए स्थानीय को फिर से कॉन्फ़िगर करना पड़ा
जेरेक

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

मेरा git सर्वर बाहर था। यही कारण है।
डैलसाविया

जवाबों:


148

इसका क्या मतलब है

आपका अपस्ट्रीम- जिस रिमोट को आप कहते हैं origin, वह लंबे समय से है, या शायद कभी नहीं था (यह इस जानकारी से अकेले बताना असंभव है) नाम की एक शाखा feature/Sprint4/ABC-123-Branch। उसके लिए एक विशेष रूप से सामान्य कारण है: किसी ने (शायद आपको याद नहीं होगा, या आपको याद होगा) उस अन्य गिट रिपॉजिटरी में शाखा को हटा दिया।

क्या करें

यह इस बात पर निर्भर करता है कि आप क्या चाहते हैं । नीचे चर्चा अनुभाग देखें। आप ऐसा कर सकते हैं:

  • रिमोट पर शाखा बनाएं या फिर से बनाएं, या
  • अपनी स्थानीय शाखा हटाएं, या
  • कुछ और आप सोच सकते हैं।

विचार-विमर्श

आपको चलना चाहिए git pull(यदि आप दौड़ रहे थे तो आपको git mergeएक अलग त्रुटि संदेश, या कोई त्रुटि संदेश नहीं मिलेगा)।

जब आप चलते हैं git fetch, तो आपका Git आपके कॉन्फ़िगरेशन urlके [remote "origin"]अनुभाग के तहत लाइन के आधार पर किसी अन्य Git से संपर्क करता है। वह Git एक कमांड ( upload-pack) चलाता है, जो अन्य बातों के अलावा, आपके Git को सभी शाखाओं की सूची भेजता है । आप git ls-remoteयह देखने के लिए उपयोग कर सकते हैं कि यह कैसे काम करता है (यह प्रयास करें, यह शैक्षिक है)। यहाँ gitअपने लिए एक गिट रिपॉजिटरी में इसे चलाने पर मुझे जो कुछ भी मिलता है उसका एक स्निपेट है:

$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f    HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b    refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f    refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1    refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6    refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638    refs/heads/todo
[snip]

refs/heads/प्रविष्टियों शाखाओं कि रिमोट पर मौजूद सभी की सूची बनाना, 1 इसी के साथ प्रतिबद्ध आईडी (के लिए refs/tags/प्रविष्टियों आईडी टैग लेकर जा सकते हैं प्रतिबद्ध बजाय वस्तुओं)।

आपका Git इनमें से प्रत्येक शाखा का नाम लेता है और उसी अनुभाग में लाइन (s) के अनुसार इसे बदलता है । इस मामले में, आपका Git उदाहरण के लिए, के साथ बदलता है । आपका Git हर शाखा के नाम के साथ ऐसा करता है जो सामने आता है।fetchremoterefs/heads/masterrefs/remotes/origin/master

यह विशेष फ़ाइल में मूल नाम भी दर्ज करता है FETCH_HEAD(यदि आप अपनी .gitनिर्देशिका में देख रहे हैं तो आप इस फ़ाइल को देख सकते हैं )। यह फ़ाइल प्रचलित नामों और ID को सहेजती है।

git pullआदेश एक सुविधा कम कटौती के रूप में होती है: इसे चलाता git fetchदूरस्थ उचित पर, और उसके बाद git merge(या, यदि हां, निर्देश दिए git rebase) जो कुछ के साथ बहस मर्ज (या रिबेस) के लिए आवश्यक हैं के रूप में द्वारा निर्देशित [branch ...]अनुभाग। इस स्थिति में, आपका [branch "feature/Sprint4/ABC-123-Branch"]अनुभाग इससे प्राप्त करने के लिए कहता है origin, फिर नाम के तहत जो भी ID मिली है, उसके साथ विलय करें refs/heads/feature/Sprint4/ABC-123-Branch

चूँकि उस नाम के तहत कुछ भी नहीं मिला था, git pullशिकायत और रोक।

यदि आप इसे दो अलग-अलग चरणों के रूप में चलाते हैं, git fetchऔर फिर git merge(या git rebase), तो आपका गिट आपकी कैश्ड remotes/origin/रिमोट-ट्रैकिंग शाखाओं को देखेगा कि किसके साथ विलय करना है या किस पर पुनर्खरीद करना है। अगर वहाँ था एक समय में इस तरह के एक शाखा, आप अभी भी रिमोट ट्रैकिंग शाखा हो सकता है। इस स्थिति में आपको एक त्रुटि संदेश नहीं मिलेगा। यदि ऐसी कोई शाखा कभी नहीं थी, या यदि आप git fetchसाथ चले --prune(जो मृत दूरस्थ-ट्रैकिंग शाखाएँ हटा दें), ताकि आपके पास कोई दूरवर्ती ट्रैकिंग शाखा न हो, तो आपको एक शिकायत मिलेगी, लेकिन यह origin/feature/Sprint4/ABC-123-Branchइसके बजाय संदर्भित होगी ।

किसी भी स्थिति में , हम यह निष्कर्ष निकाल सकते हैं कि feature/Sprint4/ABC-123-Branchअब नामित रिमोट पर मौजूद नहीं है origin

यह संभवतः एक समय में मौजूद था, और आपने संभवतः रिमोट-ट्रैकिंग शाखा से अपनी स्थानीय शाखा बनाई थी। यदि हां, तो आपके पास शायद अभी भी रिमोट-ट्रैकिंग शाखा है। आप यह देखने के लिए जाँच कर सकते हैं कि किसने शाखा को रिमोट से हटाया है, और क्यों, या आप इसे फिर से बनाने या अपनी दूरस्थ-ट्रैकिंग शाखा और / या अपनी स्थानीय शाखा को हटाने के लिए कुछ धक्का दे सकते हैं।


1 अच्छा, यह सब वह कम से कम स्वीकार करने वाला है। लेकिन जब तक कि वे विशेष रूप से कुछ रेफरी को छिपाते हैं, सूची में सब कुछ शामिल है।


यह समझाने के लिए धन्यवाद कि गिट पुल कमांड वास्तव में क्या करता है। मैं git लाने और फिर मर्ज करके अपना मुद्दा ठीक करने में सक्षम था।
फिच

11
न के बराबर दूरस्थ शाखा संदर्भ, उपयोग अपने स्थानीय भंडार में निकालने के लिएgit remote prune origin
Yoav

1
@ बेन-उरी: हाँ, या, रन git fetch --prune origin, या सेट fetch.pruneकरने के लिए trueआपके विन्यास में (सभी तीन, एक ही बात करने के लिए हालांकि Git के कुछ संस्करणों में इनमें से कुछ काफी विश्वसनीय नहीं थे इरादा कर रहे हैं)।
torek

1
आपको git checkout <your remote branch>(सभी मामलों में) अच्छा होना चाहिए।
अलेक्जेंडर शटंग

2
@JonathanBenn: आप git branch --set-upstream-to=origin/master masterअपने स्थानीय के लिए अपस्ट्रीम सेटिंग को स्विच करने के लिए उपयोग कर सकते हैं master। डिलीट-एंड-रिक्रिएट में एक साइड इफेक्ट के रूप में है (यह मानकर कि आप git checkout masterइसे बनाने के लिए मजबूर masterकरने के लिए अतिरिक्त साइड इफेक्ट के साथ DWIM- स्टाइल का उपयोग करें ) origin/master
torek

71

यह तब भी हो सकता है जब आपने / किसी ने शाखा का नाम बदला हो। तो इन चरणों का पालन करें (यदि आप जानते हैं कि शाखा का नाम बदला हुआ है) तो पहले के शाखा नाम को मान लें wrong-branch-nameऔर किसी ने इसका नाम बदलकर correct-branch-nameSo रखा ।

git checkout correct-branch-name

git pull (आप यह देखेंगे "आपका कॉन्फ़िगरेशन निर्दिष्ट करता है ..")

git branch --unset-upstream

git push --set-upstream origin correct-branch-name

git pull (आपको पहले वाला संदेश नहीं मिलेगा)


1
यह आवश्यक भी नहीं है git pushऔर यदि वर्तमान शाखा इसके रिमोट के पीछे है तो यह काम नहीं करेगा। git pull origin correct-branch-nameपर्याप्त है।
पियरे

1
ऊपर सेट करने के लिए आदेश ऊपर गलत है। के बाद एक गिट पुल खींचो, - ऑफसेट-अपस्ट्रीम ऑपरेशन, पुल के आउटपुट में आप एक त्रुटि देख सकते हैं, ऊपर की तरह सेट करने के लिए कमांड के साथ, नीचे की तरह, गिट शाखा --सेट-अपस्ट्रीम-टू = मूल / <शाखा > mybranch
अंकित मारोठी

मेरे रेपो से कुछ बड़ी फ़ाइलों को हटाने के बाद मेरे लिए अच्छी तरह से काम किया और मुझे एक नए रेपो में वापस लाने की ज़रूरत थी जिसे मैंने बनाया था
लैरीटेक

40

जांचें कि क्या आपकी दूरस्थ शाखा खींचने के लिए उपलब्ध है। मेरे पास एक ही मुद्दा था, आखिरकार एहसास हुआ कि दूरस्थ शाखा को किसी ने हटा दिया था।


4
मेरे लिए भी ऐसा ही था!
एरिन

3
एक पुल अनुरोध के बाद, विलय (अर्थात जो व्यक्ति मर्ज किया गया था) उस शाखा को हटाने का विकल्प होता है जिसे लक्ष्य शाखा में विलय कर दिया गया था। यदि आप उस बिंदु पर खींचने की कोशिश करते हैं तो आपको यह त्रुटि मिलेगी।
आर्टोकुन

यह सच है :)
मल्हार पंजाबी

7

मेरे लिए यह एक केस सेंसिटिव इश्यू था। मेरी स्थानीय शाखा Version_Feature2 के बजाय Version_feature2 थी। मैंने सही आवरण का उपयोग करके अपनी शाखा को फिर से जाँच लिया और फिर गिट पुल काम किया।


2
यह मेरी समस्या भी है। यह काफी लंबे / जटिल शाखा नामों के साथ आवश्यक नहीं है।
हाकॉन के। ओलाफसेन

6

यह त्रुटि भी प्राप्त हो सकती है जब मूल शाखा नाम में कुछ केस समस्या होती है।

उदाहरण के लिए: मूल शाखा है team1-Teamऔर स्थानीय शाखा के रूप में चेकआउट किया गया है team1-team। फिर, इस Tमें -Teamऔर tमें -teamइस तरह के त्रुटि पैदा कर सकता है। मेरे मामले में यही हुआ। इसलिए, मूल शाखा के नाम के साथ स्थानीय नाम को बदलकर, त्रुटि को हल किया गया था।


6

मेरे मामले में मुझे बस दूरस्थ शाखा पर प्रारंभिक प्रतिबद्धताओं की कमी थी, इसलिए स्थानीय शाखा को खींचने के लिए कुछ भी नहीं मिल रहा था और यह उस त्रुटि संदेश को दे रहा था।

मैंने किया:

git commit -m 'first commit' // on remote branch
git pull // on local branch

4

मुझे एक समान त्रुटि मिली जब वास्तविक कारण यह था कि मेरी डिस्क भरी हुई थी। कुछ फ़ाइलों को हटाने के बाद, git pullमैं उम्मीद के मुताबिक काम करना शुरू कर दिया।


4

मैं इस मुद्दे में भागता रहा। मेरे मामले में, शाखा नामों में मामले के अंतर के बारे में @ जेरेक की टिप्पणी इस त्रुटि का कारण थी। कुछ Windows उपकरण केस संवेदनशीलता के बारे में नहीं जानते हैं।

केस-संवेदनशीलता को git में बंद करने के लिए, इस कमांड को चलाएँ:

git config --global core.ignorecase true

ध्यान दें कि यह शाखा नामों से अधिक प्रभाव डालेगा। उदाहरण के लिए, यदि आपके पास एक ही निर्देशिका में "Foo.h" और "foo.h" हैं (विंडोज के लिए सॉफ़्टवेयर का निर्माण करते समय एक महान विचार नहीं) तो मुझे संदेह है कि आप मामले की संवेदनशीलता को बंद नहीं कर सकते।


2

बस जांचें कि क्या किसी ने रिमोट पर शाखा को हटा दिया है।


1

मेरे मामले में, मैंने उस मूल शाखा को हटा दिया था जिससे मेरी वर्तमान शाखा प्राप्त हुई थी। तो .it / config फाइल में मेरे पास था:

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.0.5
    rebase = false

simil2.0.5 हटा दिया गया था। मैंने इसे उसी शाखा के नाम से बदल दिया:

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.1.12
    rebase = false

और यह काम किया


1

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

git checkout <your-local-branch>
git branch --set-upstream-to=origin/<correct-remote-branch> <your-local-branch>
git pull

0

मेरे लिए यह इसलिए हुआ क्योंकि मैंने वेब इंटरफेस का उपयोग करते हुए एक शाखा देव को मास्टर में मिला दिया और फिर VSCode का उपयोग करके सिंक / खींचने की कोशिश की, जो कि देव शाखा पर खुला था। (यह अजीब है कि मैं इस त्रुटि को प्राप्त किए बिना मास्टर में नहीं बदल सकता।)

git pull
Your configuration specifies to merge with the ref 'refs/heads/dev'
from the remote, but no such ref was fetched.'

यह समझ में आता है कि यह रेफरी / हेड / देव नहीं मिल रहा है - मेरे लिए यह सिर्फ स्थानीय फ़ोल्डर को हटाना और फिर से क्लोन करना आसान था।


0

जब मेरी डिस्क फुल हो गई थी तो मुझे "जीट पुल" करते समय बस यह त्रुटि मिली। कुछ जगह बनाई और यह सब फिर से ठीक काम करना शुरू कर दिया।


0

आप ~/.gitconfigफ़ाइल को अपने होम फ़ोल्डर में संपादित कर सकते हैं । यह वह जगह है जहाँ सभी --global सेटिंग्स सहेजी जाती हैं।

या, रिपॉजिटरी यूआरएल के साथ उपयोग git config --global --unset-all remote.origin.urlऔर चलाने के बाद git fetch


0

मैं उसी मुद्दे का सामना कर रहा था जहां मेरी वर्तमान शाखा देव थी और मैं एमआर शाखा की जाँच कर रहा था और उसके बाद जीआईटी पुल कर रहा था। एक आसान समाधान जो मैंने लिया था, वह था मैंने एमआर ब्रांच के लिए एक नया फ़ोल्डर बनाया था और जीआईटी क्लोन द्वारा पीछा किया था।

इसलिए मूल रूप से मैंने कोड को अलग-अलग शाखा में धकेलने के लिए अलग-अलग फ़ोल्डर बनाए रखा।


0

मुझे बस वही त्रुटि मिली, जब मैंने सही मामले का उपयोग नहीं किया। मैं 'एकीकरण' की जाँच कर सकता था। Git ने मुझे git pullअपनी शाखा को अपडेट करने के लिए प्रदर्शन करने के लिए कहा । मैंने ऐसा किया, लेकिन उल्लेखित त्रुटि प्राप्त की। सही शाखा का नाम एक राजधानी 'I' के साथ 'एकीकरण' है। जब मैंने उस शाखा की जाँच की और खींचा, तो उसने बिना किसी समस्या के काम किया।


-2

यदि एक और पुल बस काम करता है, तो इसका मतलब है कि आपका इंटरनेट कनेक्ट नहीं था।


कई डाउनवोट्स और फिर भी यही कारण था कि मुझे यह त्रुटि मिली। मेरे पास इंटरनेट था लेकिन मैंने अपने git सर्वर से VPN खो दिया था। वीपीएन को फिर से जोड़ने के बाद पुल ने ठीक काम किया।
बेन थर्ले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.