Git घातक: संदर्भ में अमान्य प्रारूप है: 'refs / heads / master


101

मैं Dropboxएक gitरिपॉजिटरी को सिंक करने के लिए उपयोग कर रहा हूं , लेकिन अब जब मैं कोशिश करता pushहूं और मुझे एक त्रुटि मिल रही है:

fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'

तो, ऐसा लगता है कि ड्रॉपबॉक्स ने एक संघर्ष का पता लगाया और एक प्रति बनाई। ठीक है, कोई समस्या नहीं, इसलिए मैंने विवादित फ़ाइल को हटा दिया। फिर भी, हालांकि उपरोक्त गिट त्रुटि हो रही है।

$ git checkout master
    M   index.html
    Already on 'master'
$ git add .
$ git commit -a -m "Cleanup repo"
    [master ff6f817] Cleanup repo
    1 file changed, 5 insertions(+), 5 deletions(-)
$ git push
    fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'
    The remote end hung up unexpectedly`

मैं इसे कैसे ठीक करूं? धन्यवाद।

जवाबों:


178

यदि आप इस बारे में निश्चित नहीं हैं, तो अपने रेपो का बैकअप बनाएं, क्योंकि ये कमांड अपरिवर्तनीय हैं।

सबसे पहले, अपने रेपो डायरेक्टरी पर जाएं।

cd myrepo

फिर परस्पर विरोधी फ़ाइलों की खोज करें और उन्हें हटा दें

find . -type f -name "* conflicted copy*" -exec rm -f {} \;

अंत में, git के पैक-रेफ्स फ़ाइल से किसी भी "विवादित" संदर्भ को हटा दें

awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs

1
मेरे पास एक ही मुद्दा था और इसने मेरे लिए इसे ठीक कर दिया। धन्यवाद!
erik

यह मेरे लिए भी तय है। धन्यवाद!
cecconeurale

1
find . -type f -name "* conflicted copy*" -delete
मैकोस

42

विवादित फ़ाइल कई स्थानों पर हो सकती है, मैं इसमें देखूंगा:

.git/logs/refs/remotes/origin/
.git/logs/refs/heads/
.git/refs/remotes/origin/
.git/refs/heads/

या आप .gitउपनिर्देशिका में हर जगह देख सकते हैं :find . -name '*conflicted*'

या, अन्यथा, सक्रिय शाखाओं को सूचीबद्ध करें git branch -aऔर git branch -dकुछ भी संदिग्ध हटा दें ( )।


अंदर हर जगह विवादित फाइलें हैं .git। मैंने उन सभी को और उसके तयशुदा हिस्से को मिटा दिया। धन्यवाद।
जस्टिन

2
@ जस्टिन ग्लैड I मदद कर सकता है। यदि यह उत्तर या किसी अन्य ने आपकी समस्या को हल कर दिया है, तो कृपया इसे स्वीकार करें।
मार्को लेओग्रांडे

2
मैक ओएस एक्स पर उपयोग करें: find . -name '*conflicted*'(संपादित करें: प्रारूप)
xgMz 23

1
@xgMz धन्यवाद, मैं आपके उत्तर को अपडेट करूंगा, क्योंकि आपके समाधान में सामान्य वैधता है।
मार्को लेओग्रांडे

1
एक साधारण के साथ findमुझे एक ही परस्पर विरोधी फ़ाइल मिली और दो के साथ समस्या को मैन्युअल रूप से ठीक किया mv। इसे धीरे-धीरे करना और कदम से कदम उठाना सबसे सुरक्षित मार्ग है।
pid

8

यह हमारी टीम के साथ भी होता है जब मेरे सहयोगी अपने बदलावों को आगे बढ़ाते हैं और ड्रॉपबॉक्स अपडेट होने से पहले पीसी को बंद कर देते हैं।

मैंने इसे बस इतना ही हल किया।

बस विवादित प्रति हटा दी गई। (XXXX की विवादित कॉपी yyyy-mm-dd)

और इसे सामान्य रूप से खींचें।

ध्यान दें कि मेरे सहयोगी ने गड़बड़ करने से पहले परिवर्तन किए थे। और वह अपने बदलावों को फिर से आगे बढ़ाता है। इस बार कोई बंद नहीं। :)


1
मेरे लिए बिल्कुल सही काम किया :) thx - मेरे लिए ड्रॉपबॉक्स ने कुछ अजीब स्ट्रिंग फ़ाइल नाम बनाया जो "अद्यतन" के लिए संगत नहीं था
cV2

1
यह मेरे लिए काम किया! / Refs / heads फ़ोल्डर में नाम में "विवादित प्रतिलिपि" के साथ एक फ़ाइल थी और इसे हटा रहा था, फिर खींच / धक्का और सब ठीक है। धन्यवाद!
दिसदेव

7

मैं अपने .गित फ़ोल्डर से सभी विवादित फ़ाइलों को हटाने में सक्षम था, लेकिन मुझे उन फ़ाइलों के बारे में त्रुटियां मिलती रहीं जो अब मौजूद नहीं थीं।

मेरे लिए यह फिक्स खुल रहा था .git/refs/packed_refsऔर उन लाइनों को डिलीट कर रहा था जिनमें टेक्स्ट "विवादित" था।


1

मेरे लिए यह त्रुटि दे रहा था: fatal: Reference has invalid format: 'refs/tags/r0.2:3'

आप /.it/packed_refs फ़ाइल पर जा सकते हैं और इसके लिए लाइन हटा सकते हैंrefs/tags/r0.2:3

फिर इसने काम करना शुरू कर दिया। लेकिन यह पहली बार में क्यों हुआ मुझे नहीं पता।


0

git checkout masterस्वस्थ, अच्छी तरह से नामित शाखा पर आने के लिए पहले प्रयास करें ।


मूल पोस्ट में अपडेट किया गया आउटपुट।
जस्टिन

हम्म, क्या आप पूरी कोशिश कर सकते हैं git push origin master, और git branch -aकृपया आउटपुट भी पेस्ट कर सकते हैं ?
प्रहार करें

यहाँ एक ही त्रुटि ... git branch -aइस बहुत त्रुटि में परिणाम की कोशिश कर रहा है !
trusktr

समस्या दूरस्थ रिपॉजिटरी पर है, इसलिए इसे खींचने या जांचने से इसका समाधान नहीं होता है। ऊपर दिए गए अन्य उत्तर रिमोट पर फाइलों को सीधे फिक्स करने और पूरी तरह से काम करने के लिए संदर्भित करते हैं। आपका विज्ञापन बहुत अच्छा है, लेकिन यह समस्या का जवाब नहीं है।
pid

0

मुझे वही त्रुटि हो रही थी

घातक: संदर्भ में अमान्य प्रारूप है: 'refs / heads / somebranch (1)'

निम्न आदेश के लिए

git branch

फिर, मैंने कमांड का उपयोग करके त्रुटिपूर्ण नाम (शाखा का नाम (1)) का उपयोग किया

find . -name 'somebranch (1)'

और यह निम्नलिखित परिणाम दिखा

./.it/refs/heads/somebranch (1)

जो कि किसी न किसी आईएमओंच के कुछ डुप्लिकेटेड संस्करण है । इसलिए, मैंने डिलीट के बाद फाइंड कमांड को निष्पादित करके इसे हटा दिया

find . -name 'somebranch (1)' -print -exec rm -rf {} \;

फिर शाखा कमांड सफलतापूर्वक चलता है

git branch

0

मैं इसी तरह की त्रुटि का सामना करता हूं

fatal: Reference has invalid format: 'refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)'

बस .git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)दूरस्थ ड्रॉपबॉक्स रिपॉजिटरी में फ़ाइल को हटाने से समस्या हल हो गई।

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