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




branch bitbucket (10)

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

आपका कॉन्फ़िगरेशन दूरस्थ से रेफरी 'रेफ्स / हेड्स / फीचर / स्प्रिंट 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

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

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

क्या करें

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

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

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

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

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

$ 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 संबंधित कमिट ID के साथ ( refs/tags/ प्रविष्टियों के लिए ID कमिट के बजाय ऑब्जेक्ट को टैग कर सकती हैं)।

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

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

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

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

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

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

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

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


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

या, git config --global --unset-all remote.origin.url और git config --global --unset-all remote.origin.url url के साथ git fetch बाद चलाएँ।


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


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


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

मैंने किया:

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

मेरे मामले में, मैंने उस मूल शाखा को हटा दिया था जिससे मेरी वर्तमान शाखा प्राप्त हुई थी। तो .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

और यह काम किया


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


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

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

git config --global core.ignorecase true

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


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


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

git checkout correct-branch-name

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

git branch --unset-upstream

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

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





pull