git पुल एरर: एरर: रिमोट रेफरी चालू है लेकिन अपेक्षित है


227

पूर्ण संदेश:

error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
 ! a21359c..6273ffc  user -> origin/user  (unable to update local ref)

3
जाहिरा तौर पर किसी ने रिपॉजिटरी के इतिहास को फिर से लिखा git push --force। चलाने की कोशिश करें git pull --force
xaizek

1
गिट पुश के साथ एक ही त्रुटि देता है
संजीव कुमार दांगी

5
इस सवाल का जवाब इस त्रुटि को हल किया - stackoverflow.com/questions/3046436/…
संजीव कुमार दांगी

जवाबों:


225

यदि आप एक फ़ाइल सिस्टम के तहत git चला रहे हैं जो संवेदनशील नहीं है (Windows या OS X) यह तब होगा जब एक ही नाम वाली दो शाखाएँ हों लेकिन अलग-अलग कैपिटलाइज़ेशन, जैसे user_model_changesऔर जैसे User_model_changesकि दोनों दूरस्थ शाखाएँ एक ही ट्रैकिंग रेफरी से मेल खाएँगी ।

गलत दूरस्थ शाखा को हटाएं (आपके पास ऐसी शाखाएँ नहीं होनी चाहिए जो केवल मामले से भिन्न हों) और फिर git remote prune originऔर सब कुछ काम करना चाहिए


उत्तर के लिए धन्यवाद। यह इस त्रुटि के साथ समस्या नहीं थी। मैंने पहले ही इस मुद्दे का हल ढूंढ लिया और प्रश्न के नीचे टिप्पणी में पोस्ट किया।
संजीव कुमार दांगी

2
मैक ओएस एक्स के लिए भी मदद करता है (डिफ़ॉल्ट फाइल सिस्टम असंवेदनशील है)।
टामो फ्रेसे

12
हां, विंडोज पर केस-असंवेदनशील मुद्दा समस्या का कारण बना। मैंने इसे मैन्युअल रूप से .git\refs\remotes\originफ़ोल्डर में रेफ को हटाकर और फिर git pullसे तय किया।
रॉय लिंग

और उन लोगों के लिए जो न जानते हैं कि .it फ़ोल्डर कहां होगा .. यह आपके प्रोजेक्ट / कार्यक्षेत्र फ़ोल्डर के अंदर बनाया जाएगा: D
कुमार

1
यह एक बग है। (कम से कम त्रुटि संदेश गलत है)। मुझे उम्मीद है कि कोई इस बग को git प्रोजेक्ट में रिपोर्ट कर सकता है। बग को git प्रोजेक्ट में रिपोर्ट करना मेरे लिए कठिन है। github.com/git/git
कांस्य पुरुष

190

स्थायी फिक्स

git update-ref -d इस त्रुटि के मेरे उदाहरण को हल किया, उदा

git update-ref -d refs/remotes/origin/user

ध्यान दें कि यह रिमोट को प्रभावित नहीं करता है।

मेरे मामले में, एक बाद में git fetchउस शाखा को फिर से लाया गया, और git लाने के बाद / अब कोई त्रुटि नहीं दी गई "दूरस्थ रेफरी चालू लेकिन अपेक्षित है"।

यदि वह काम नहीं करता है, तो एक अस्थायी फिक्स:

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

git fetch # may give an error for a particular branch, but other branches will still be successfully fetched
git merge origin/master

यह स्वीकृत समाधान होना चाहिए क्योंकि यह रिमोट को छुए बिना समस्या को हल करता है।
सेर्नो

52

बस के तहत फ़ोल्डर्स और फ़ाइलों को हटा दें \.git\refs\remotes\origin। काम करता है, जब यू में अप्रकाशित परिवर्तन नहीं होते हैं।


यह काम नहीं कर सकता है यदि आपका रिमोट रेफरी 'पैक' है और इसलिए रिफ्यूज / रिमूव / ** @ JDiMatteo के समाधान में काम नहीं करना चाहिए तब भी
अलेक्जेंडर बर्ड

2
मेरे लिए काम किया। अनेक अनेक धन्यवाद!
स्वप्निल पटवा

एक जादू की तरह काम किया! धन्यवाद!
अनुराग एस शर्मा

43

मैंने इस समस्या को हल करने के लिए इसे चलाया:

git gc --prune=now

2
यह मेरे लिए मुद्दा तय किया।
आमिर रिज़वान

2
मेरे लिए भी ..-- :)
अरविंद आर पिल्लई

3
धन्यवाद, यह समाधान मेरे लिए ठीक है। क्या आप प्रदान किए गए समाधान के बारे में कुछ और बता सकते हैं।
अनमोल

1
मूल रूप से यह सिर्फ गिट कचरा इकट्ठा करने वाला उपकरण है, इसलिए यह ऐसी किसी भी चीज़ को मिटा देता है जो सिंक में नहीं है, लेकिन कैशिंग उद्देश्यों के लिए स्थानीय कंप्यूटर पर है
इलाद सिल्वर

42

एक-एक करके नीचे के दो आदेशों का उपयोग करें।

git gc --prune=now

git remote prune origin

इससे आपकी समस्या दूर हो जाएगी।


1
यह मेरे लिए काम करता है, लेकिन जब मैं एक और काम करता हूं तो यह मुद्दा फिर से
उठता है

@ जोजिन आप ही के रूप में। और मैंने अंततः प्रकाश सरवनन द्वारा प्रदान किए गए तरीके को चुना
xi.lin

1
इसे git फ़ाइलों को संपादित करने के सुझाव से अधिक मूल्यांकित किया जाना चाहिए :)
माइक वाइज

केवल इस समाधान ने मेरे लिए काम किया। धन्यवाद!
insaineyesay

12

मुझे अपनी शाखा को अपनी कमांड लाइन से हटाना पड़ा :

.git\refs\remotes\{my remote}\{**my branch**}

और फिर मैन्युअल रूप से कर रहे हैं:

git pull [remote_name] [branch_name]

मैं परिवर्तनों को खींचने में सक्षम था।

नोट: मैं SourceTree का उपयोग कर रहा था और पुल करने में असमर्थ था।


अंतत: मैंने अपने रीमोज़ का नाम बदल दिया: मेरे सोर्सट्री इतिहास में मेरे पास दो रीमोट्स "बिटबकेट / स्टेजिंग" और "बिटबकेट / स्टेजिंग" थे, लेकिन कमांड लाइन पर केवल "बिटबकेट" ही दिखाई दिया: जब रिमोट-वी.वी. इसलिए मैंने Bitbucket का नाम बदलकर bitbucket कर दिया और संघर्ष आखिरकार गायब हो गया, आशा है कि यह सबसे अधिक संभावना स्रोत उपयोगकर्ताओं की मदद करता है।
जोगम 5

मुझे .git\packed-refsमेरे लिए तय होने से पहले शाखा को भी हटाना पड़ा ।
माइकल

6

एक हार्ड रीसेट भी समस्या का समाधान करेगा

git reset --hard origin/master

क्या आपने एक सर्वश्रेष्ठ उत्तर चुना है?
मूरानोवा

5

क्लीयर स्टेप्स

  1. टर्मिनल में

    cd /.git/refs/remotes/origin
    
  2. करो ls, तुम कुछ शाखाओं और सिर देखेंगे

  3. उस शाखा को हटा दें जिसे आपको लगता है कि समस्या है

    rm branchname
    
  4. यदि यह काम नहीं करता है, तो सभी शाखाओं / हेड को हटा दें

    • आप वाना पुल कर सकते हैं

आशा है कि अब यह काम करता है।


क्या यह अनिवार्य रूप से समान है git update-ref -d <branchname>?
jt000


2

दुर्भाग्य से जीआईटी प्रून और रीसेट या पुश जैसे कमांड मेरे लिए कारगर नहीं थे। प्र्यून ने एक बार काम किया और फिर यह मुद्दा वापस लौट आया।

स्थायी समाधान जो मेरे लिए काम करता है, वह एक git फ़ाइल को मैन्युअल रूप से संपादित करना है। बस प्रोजेक्ट के .गित फ़ोल्डर पर जाएं और फिर नोटपैड ++ जैसे टेक्स्ट एडिटर में फ़ाइल पैक-रेफ्स खोलें। फिर असफल शाखा के साथ पंक्ति में नेविगेट करें और अपने गाइड को अपेक्षित रूप से अपडेट करें।

यदि आपके पास एक संदेश है:

"त्रुटि: रेफरी 'रिफ्यूज / रिमॉडेस / ओरिजिन / फीचर / ब्रांच_एक्सएक्सएक्स' लॉक नहीं कर सकता: 425ea23facf96f51f412441f41ad488fc098cf23 पर है, लेकिन अपेक्षित 3838686fed394ff1a1a1c5a5a522d886adcecd79"

फिर फ़ाइल में पंक्ति को 'रेफ्स / रेमोट्स / ओरिजिन / फीचर / ब्रांच_एक्सएक्सएक्स' के साथ खोजें। वहाँ गाइड अपेक्षित (2) एक - 383de86fed394ff1a1aeefc4a522d886adcecd79 होगा। आपको इसे वास्तविक (1) एक - 425ea23facf96f51f412441f41ad488fc098cf23 पर बदलना होगा।

अन्य असफल शाखाओं के लिए दोहराएं और आप आगे बढ़ना अच्छा होगा। कभी-कभी फिर से लाने के बाद मुझे उन्हीं शाखाओं के लिए दोहराना पड़ता था, जो मैंने पहले ही 'निश्चित' कर दी थीं। जीआईटी अपडेट को फिर से लाने पर आपको नवीनतम जानकारी मिलती है।

वैसे भी समस्या शो स्टॉपर नहीं है। शाखा सूची अपडेट हो जाती है। यह बल्कि एक चेतावनी है।



0

यहाँ एक ही मामला है, लेकिन टिप्पणियों के बारे में कुछ भी नहीं पोस्ट किया गया यह मेरे मामले में सही है, मेरी केवल एक शाखा (मास्टर) है और केवल यूनिक्स फाइल सिस्टम का उपयोग करते हैं, यह त्रुटि तब होती है जब मैं git fetch --progress --prune मूल चलाता हूं और शाखा आगे है या 'मूल / गुरु'। कोई भी प्रतिबद्ध नहीं कर सकता, केवल 1 उपयोगकर्ता धक्का कर सकता है।

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

[2014-07-29 13:58:37] Payload POST received from Bitbucket
[2014-07-29 13:58:37] Exec: cd /var/www/html/acme
---------------------
[2014-07-29 13:58:37] Updating Git code for all branches
[2014-07-29 13:58:37] Exec: /usr/bin/git checkout --force master
[2014-07-29 13:58:37] Your branch is ahead of 'origin/master' by 1 commit.
[2014-07-29 13:58:37]   (use "git push" to publish your local commits)
[2014-07-29 13:58:37] Command returned some errors:
[2014-07-29 13:58:37] Already on 'master'
---------------------
[2014-07-29 13:58:37] Exec: /usr/bin/git fetch --progress --prune origin
[2014-07-29 13:58:39] Command returned some errors:
[2014-07-29 13:58:39] error: Ref refs/remotes/origin/master is at 8213a9906828322a3428f921381bd87f42ec7e2f but expected c8f9c00551dcd0b9386cd9123607843179981c91
[2014-07-29 13:58:39] From bitbucket.org:acme/acme
[2014-07-29 13:58:39]  ! c8f9c00..8213a99  master     -> origin/master  (unable to update local ref)
---------------------
[2014-07-29 13:58:39] Unable to fetch Git data

इस समस्या को हल करने के लिए (मेरे मामले में) बस पहले गिट पुश को चलाएं यदि आपकी शाखा मूल से आगे है।


3
यहां आपका जवाब केवल इस तथ्य से संबंधित है कि एक नई प्रतिबद्धता के बाद आपका स्थानीय भंडार मूल से आगे है। यह एक स्थानीय गिट कमिट ऑपरेशन की प्राकृतिक स्थिति है और मूल प्रश्न से संबंधित नहीं है।
घटिया

0

मुझे पता है कि यह पुराना है, लेकिन मेरा अपना तय है। क्योंकि मैं स्रोत वृक्ष का उपयोग कर रहा हूं, इसलिए यह त्रुटि होती है क्योंकि कोई व्यक्ति एक नई शाखा बनाता है। स्रोत वृक्ष इस बारे में भ्रमित है। कॉम्बोक्स को खींचने के लिए "रिमोट ब्रांच के बगल में" रिफ्रेश "बटन दबाने के बाद, ऐसा लगता है कि सॉकरसेट्री ने शाखा सूची को अपडेट कर दिया है, और अब मैं सफलतापूर्वक खींच सकता हूं।


0

मुझे वही समस्या थी जो इसलिए हुई क्योंकि मैंने एक पुरानी कमिटमेंट को रीसेट कर दिया था, हालांकि मैंने पहले ही रिमोट ब्रांच को धक्का दे दिया था।

मैंने अपनी स्थानीय शाखा को हटाकर फिर मूल शाखा की जाँच की git checkout origin/my_branchऔर फिर निष्पादित करके इसे हल कियाgit checkout my_branch


-1

लगातार खोज करने के बाद, यह वह उपाय है जो मेरे लिए काम करता है जो अपस्ट्रीम को परेशान / हटा देता है

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