गिट पुल पर त्रुटि त्रुटि (स्थानीय रेफरी अद्यतन करने में असमर्थ)


115

मेरे पास केवल शाखा मास्टर है और इस त्रुटि को हर बार मैं "गिट पुल" करने की कोशिश करता हूं:

error: Couldn't set refs/remotes/origin/master
From /var/lib/git/xxx/project
 ! a0f80ea..49177a3  master     -> origin/master  (unable to update local ref)

और जब मैं "मैं मूल गुरु को पकड़ता हूँ" मिलता है:

error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.

मैं खोज रहा हूँ, लेकिन क्यों नहीं ढूँढ सकता


2
स्थानीय भंडार कहाँ है? क्या आपने इसे एक अलग उपयोगकर्ता के रूप में बनाया है, जिसे आप पुल को निष्पादित करने के लिए उपयोग कर रहे हैं? यह एक फ़ाइल अनुमति समस्या की तरह लगता है।
tpg2114

हाँ, आप सही कह रहे हैं कि प्रोजेक्ट फ़ाइलों का स्वामी कोई अन्य उपयोगकर्ता था, अब मेरा प्रश्न इतना मूर्ख लगता है, लेकिन आपने मुझे उत्तर दिया, कृपया इसे सर्वश्रेष्ठ के रूप में चुनने का उत्तर दें;)
user115561

कृपया @ tpg2114 इसे चुने जाने के उत्तर के रूप में जोड़ें
user115561

जवाबों:


263

मेरी टीम और मैं इस त्रुटि में भाग गए, सोर्सट्री में खींचने पर, स्थानीय रेफरी को अपडेट करने में असमर्थ

हमने इस्तेमाल किया :

git gc --prune=now

यह किसी भी डुप्लिकेट संदर्भ ऑब्जेक्ट को निकालता है जिसे समस्या को ठीक करना चाहिए।

यहाँ कुछ लिंक दिए गए हैं जहाँ आप git reference और pruning के बारे में अधिक जान सकते हैं :

सप्ताह के टिप टिप

git-prune प्रलेखन

संदर्भ देखें


1
मेरे लिए भी काम किया, एक ही संदेश, विंडोज 7 पर Sourcetree
जेम्स वेस्टगेट

2
बस इस मुद्दे के रूप में अच्छी तरह से शुरू कर दिया। बहुत बहुत धन्यवाद! पूरी तरह से काम किया!
ddrossi93

3
: इन दोनों आदेशों की आवश्यकता हो सकती git gc --prune=now git remote prune originसे stackoverflow.com/questions/2998832/...
ब्रायन

1
मैंने कोशिश की git remote prune originऔर यह मेरे काम नहीं आया। लेकिन उसके बाद यह कोशिश की git gc --prune=now, और यह काम किया! यकीन नहीं, अगर दोनों को उस क्रम में या केवल इस एक की आवश्यकता थी।
अनुराग

1
फिर भी एक और गूढ़ मुद्दा है gitकि एक सहायक StackOverflow पोस्ट के साथ एक हल समाधान के साथ होता है।
जोजफ

128

मैंने नीचे हल किया:

git remote prune origin


6
यूरेका! यह वास्तव में काम किया। इसका नाम बदलकर रखी गई शाखाओं या रिमोट से कुछ करना है। मैं इसे समझने और समझाने की कोशिश नहीं करने जा रहा हूं।
theSoftwareJedi

8
यह मेरे लिए git gc --prune=nowकिया था , कुछ भी नहीं किया
जोश जी

3
वही। यह मेरे लिए काम करता है। git gc --prune = अब मेरे लिए काम नहीं करता था।
टोनी

16

गिटबैक लाइन कमांड के साथ, उपयोग करें git update-ref अपनी स्थानीय शाखा के संदर्भ को अद्यतन लिए करें:

$ git update-ref -d refs/remotes/origin/[locked branch name]

तो का उपयोग कर खींचो $ git pull

[locked branch name] उस शाखा का नाम है, जो त्रुटि आईईडी के बेमेल होने के कारण हो रही है।


13

अपने git रिपॉजिटरी रूट फ़ोल्डर में इस कमांड का उपयोग करने का प्रयास करें:

rm .git/logs/refs/remotes/origin/master 

यह फ़ोल्डर विंडोज पर कहां है?
कोलोब कैनयन

मुझे यह मिला। यह कुछ भी निर्देशिका है जिसे आपने क्लोन किया है
Kolob Canyon

12

मैं उसी त्रुटि संदेश को खोजता हूं जो एक बिटबक रेपो से अपनी लोकल कॉपी में खींचने की कोशिश करता है। git pull origin masterइस त्रुटि संदेश के लिए केवल एक ब्रांच मास्टर और कमांड लीड भी है

From https://bitbucket.org/xxx
 * branch            master     -> FETCH_HEAD
error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.

समाधान इस प्रकार है

  1. git reflog अंतिम प्रतिबद्ध की संख्या ज्ञात कीजिए
  2. git reset --hard <numnber> अंतिम कमिट पर रीसेट करें
  3. git pull origin master त्रुटि के बिना फिर से खींचो

10

rm .git/refs/remotes/origin/master

यह मेरे लिए काम करता है!


8

सुनिश्चित करें कि उपयोगकर्ता निष्पादित कर रहा git pullहै वही उपयोगकर्ता है जिसने रिपॉजिटरी बनाया है। फ़ाइल अनुमतियां गलत हैं।


मेरे लिए मुझे रेपो में फाइलों के मालिक को बदलना पड़ा जिसे मैं सही उपयोगकर्ता के लिए चोंट के साथ खींचने की कोशिश कर रहा था। मुझे लगता है कि यह मूल रूप से आप क्या कह रहे थे हालांकि यह मेरे लिए स्पष्ट नहीं था जब मैंने इसे पढ़ा।
डीई

मैं इस बात से सहमत हूं, जाँच करें कि स्वामी और समूह उपयोगकर्ता को ".it" रेपो में खींचने के लिए तैयार हैं (यदि आप एक शाखा "रूट" खींच रहे हैं तो ऐसा होता है) मेरे मामले में एक "सूडो चाउन-आर" ने काम किया।
jo_


2

यह मेरे लिए OSX पर हुआ जहां मैं केस असंवेदनशील फाइल सिस्टम का उपयोग करता हूं। किसी अन्य डेवलपर ने उसी नाम से एक शाखा को धक्का दिया लेकिन अलग मामला: My-Branchबनाम my-branch

मैंने पहले ही My-Branchचेक आउट कर लिया था और मुझे "स्थानीय रेफरी को अपडेट करने में असमर्थ" त्रुटि मिली, जब मैंने शायद एक पुल किया क्योंकि फ़ाइल सिस्टम सोचता है My-Branch==my-branch

चूँकि हम Github का उपयोग करते हैं इसलिए मैं Github के GUI के माध्यम से शाखाओं में से एक को हटाकर समस्या को हल कर सकता था।


मेरे मामले में, दोनों परस्पर विरोधी शाखाएँ किसी अन्य उपयोगकर्ता की थीं, इसलिए मैं एक को हटा नहीं सका। इसके बजाय, मैंने .it \ refs \ remotes के तहत शाखा रेफरी फ़ाइल को हटा दिया, और यह तय कर दिया (अस्थायी रूप से - समस्या प्रत्येक बार वापस आती है जब तक कि मैं तब तक खींचता हूं जब तक कि अन्य उपयोगकर्ता उसकी एक शाखा को हटा नहीं देता)।
जन मंडी

मेरा मुद्दा स्थानीय शाखा और दूरदराज के अलग-अलग पूंजीकरण के कारण भी था। स्थानीय शाखा को हटाना, ऊपर दिए गए prune कमांड का उपयोग करना, और फिर मूल से जाँच कर इसे हल किया
वर्णन करें

1

यह त्रुटि (स्थानीय रेफरी को अपडेट करने में असमर्थ) भी हो सकती है यदि आपने हाल ही में पासवर्ड बदले हैं और आपके विंडोज और लिनक्स लॉगिन को एकीकृत करने वाले कुछ फैंसी सामान हैं।


1

एक पीसी उपयोगकर्ता से बोल रहा हूँ - रिबूट।

ईमानदारी से, यह मेरे लिए काम किया। मैंने दो अजीब git मुद्दों को हल किया है मुझे लगा कि इस तरह से भ्रष्टाचार थे।


1

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

अगर मेरे पास मैक वीपी में एक फ़ाइल है, जो कि विंडोज वीएम पर स्थित एक रेपो से है, तो मुझे कभी-कभी "स्थानीय रेफरी" त्रुटि को अपडेट करने में असमर्थ मिलता है। ऐसा होने पर समाधान केवल फ़ाइल को बंद करने या मैक ऐप को छोड़ने का है।


1

यहाँ क्या हुआ? आपकी दूरस्थ शाखाओं के स्थानीय संदर्भ बदल गए थे और इसलिए जब आप दौड़ते हैं git pull, तो git को कोई संगत दूरस्थ शाखा नहीं मिलती है और इसलिए यह विफल हो जाती है।

git remote prune origin

वास्तव में इस स्थानीय संदर्भ को साफ करता है और फिर चलाता है git pull

सुझाव - --dry-runसुरक्षा के लिए विकल्प के साथ कृपया चलाएँ


0

मैं अपने डेबियन सर्वर पर एक ही मुद्दा था क्योंकि डिस्क भरा हुआ है। कोई भी अस्थायी फ़ाइल नहीं बनाई जा सकती क्योंकि डिवाइस पर कोई स्थान नहीं बचा है। कुछ फाइलों को साफ करने के बाद, यह ठीक काम किया।


0

यह काम मेरे लिए

rm .git/logs/refs/remotes/origin/master 

मुझे संदेह है कि यह मदद करता है - या यहां तक ​​कि बिल्कुल भी काम करता है। मुझे covince करने के लिए अन्यथा कृपया यह कैसे काम करना चाहिए और क्यों यह समस्या के साथ मदद करने के लिए माना जाता है की एक व्याख्या जोड़ें। समान रूप से मौजूदा अन्य उत्तर के समान अंतर को उजागर करना एक बोनस होगा। खासतौर पर बाबाक ने एक उभार दिया।
युनानोश

0

मेरे पास एक ही त्रुटि थी, मैं ग्रहण के भीतर से अपडेट कर रहा था और मुझे कई त्रुटियां मिलीं। इसलिए मैंने एक डॉस कमांड विंडो से अपडेट करने की कोशिश की, और वही मुद्दा मिला।

फिर मैंने "git gc --prune = now" के समाधान की कोशिश की, इससे संदेश दिया गया कि फाइलें Refs डायरेक्टरी में लॉक थीं।

ग्रहण को "refs" निर्देशिका में किसी चीज़ पर लॉक होना चाहिए था।
मुझे जो समाधान मिला वह बस ग्रहण को बंद करना था। फिर मैंने "git PULL" कमांड के साथ DOS से रिपॉजिटरी को अपडेट किया, और सब कुछ ठीक काम किया।


0

फ़ाइल को हटाएं .it / लॉग / रेफ / / रिमोट / मूल / [लॉक की गई शाखा का नाम]


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