कई चरण प्रविष्टियों के लिए गिट में एक घातक त्रुटि हो रही है


241

ओएस एक्स पर एकता गेम इंजन के साथ जीआईटी संस्करण 2.2.0 का उपयोग करना, और मेरा कोड बनाना चाहता था। मैंने सब कुछ जोड़ा और त्रुटि संदेश नहीं मिला। उसके बाद प्रतिबद्ध करें, और यह त्रुटि संदेश मिला:

fatal: multiple stage entries for merged file 'Assets/Prefabs/Resources'

इसे ध्यान में रखते हुए मैंने धक्का दिया, जिससे एक त्रुटि संदेश नहीं दिया गया, वास्तव में कहा गया था Everything up-to-date इसलिए मैंने बिटबकेट (जहां रेपो आयोजित किया गया है) की जाँच की और यह मेरी प्रतिबद्धता को प्रदर्शित नहीं किया। इसलिए मैंने अपना स्थानीय लॉग चेक किया और वह भी मेरी प्रतिबद्धता को नहीं दर्शाता है।

मैंने उत्तर के लिए Google में देखा है ... और कुछ भी नहीं। यह क्या त्रुटि है? और मैं इसे कैसे ठीक कर सकता हूं?


आप किस संस्करण या टूल का उपयोग कर रहे हैं? कई चरण प्रविष्टियों की जाँच में सुधार के बारे में डेवलपर्स सूची में हाल ही में एक थ्रेड आया है। news.gmane.org/gmane.comp.version-control.git
फिलिप ओकले

संभावना है कि 2.2.0 में अतिरिक्त जाँच शामिल हो सकती है। "सुनिश्चित करें कि अनमैरिड एंट्रीज को हटा दिया जाए" 12 अगस्त जैमे सोरियानो पास्टर द्वारा शुरू करने के लिए एक धागा हो सकता है।
फिलिप ओकले

4
तो ऐसा क्यों होता है?
चार्ली पार्कर

बस उक्त फ़ाइल में एक डमी संपादित करें और 'कमिट और सिंक' करें।
सजनमाहा

नोट: यह भी देखें stackoverflow.com/a/51919644/6309
VonC

जवाबों:


381

पहला वर्कअराउंड, जो Git (2.3+, Q2 + 2015) के हालिया संस्करणों के साथ काम करता है, अनुदान के अधिक अद्यतित उत्तर में उल्लिखित है :

  1. सूचकांक हटाएं

    $ rm .git/index
    
  2. सभी को जोड़ो

    $ git add -A
    
  3. कमिट

    $ git commit -a
    

मूल उत्तर (2014 के अंत में)
सामान्य हल है:

  • क्लोन फिर से एक नए स्थानीय रेपो में रिमोट रेपो
  • पहले रेपो से दूसरे में बदलाव जोड़ें:

    $ cd /patH/to/second/cloned/repo
    $ git --work-tree=/path/to/first/repo add .
    

आप read-cache.cइस पैच में चर्चा किए गए इस त्रुटि संदेश को देख सकते हैं (" read-cache.c: सुनिश्चित करें कि अनमैरिड एंट्रीज हटा दी गई हैं "), और Git 2.2 कमिट में पेश किया गया ।
चूंकि यह हाल ही में है, इसलिए यह संभव है कि गिट को 2.1 में अपग्रेड करना उस पैच से प्रभावित न होने के लिए पर्याप्त होगा।

ओपी डैनियल Toebe कहते हैं टिप्पणी में :

मुद्दा मेरी मैकबुक पर हुआ, जिसने मुझ पर विफल होने का फैसला किया, और एक अन्य कंप्यूटर दुर्घटना ने मुझे अपनी परियोजनाओं पर पीछे छोड़ दिया।


@ वार्नर यह संभव है कि यह एक बग है, या आपके मामले में उस पैच का साइड-इफेक्ट है।
VONC

1
विलंबित प्रतिक्रिया के लिए क्षमा करें ... समस्या मेरी मैकबुक पर हुई, जिसने मुझ पर विफल होने का फैसला किया, और एक अन्य कंप्यूटर दुर्घटना ने मुझे अपनी परियोजनाओं पर पीछे छोड़ दिया।
डैनियल टोबी 5

1
@DanielToebe अच्छी प्रतिक्रिया। मैंने इसे अधिक दृश्यता के लिए उत्तर में शामिल किया है।
वॉन

मैं बस उसी में भाग गया, एक प्रयास के बादgit commit -c sha
क्रिस लीशमैन

2
किसी भी दिलचस्पी के लिए, यह मेरे साथ हुआ क्योंकि मैं गलती से फ़ाइल के बजाय अपने .गित फ़ोल्डर में एक फ़ाइल संपादित कर रहा था।
ostler.c

166

मेरा मानना ​​है कि मैंने इस मुद्दे का सामना किया क्योंकि मैंने बदलाव जोड़े और फिर एक फ़ाइल को नष्ट कर दिया, जो मैंने अभी-अभी किया था। यदि यह आपके मामले के समान लगता है, तो मैं नीचे फिर से क्लोनिंग को बचाने और मैन्युअल रूप से आपके परिवर्तनों में जोड़ने के लिए नीचे का पालन करने की सलाह देता हूं।

मैं अपनी रिपॉजिटरी में .it / index फाइल को हटाकर इस मुद्दे को ठीक करने में सक्षम था, जैसा कि @slider ने सुझाव दिया था (मुझे विश्वास है कि उसने पथ को गलत समझा था)।

rm .git/index

फिर मुझे अपने स्थानीय परिवर्तनों को फिर से जोड़ना और प्रतिबद्ध करना पड़ा

git add -A
git commit -m "..."

मैं तब दूर से धकेलने में सक्षम था।

Git index क्या है और यह कैसे प्रासंगिक है?

Git सूचकांक के साथ सौदा क्या है?

Git "index" वह जगह है जहां आप उन फ़ाइलों को रखते हैं जिन्हें आप git रिपॉजिटरी के लिए प्रतिबद्ध चाहते हैं।

इससे पहले कि आप "रिपिट" (चेकइन) फाइलों को गिट रिपॉजिटरी में रखें, आपको पहले फाइल को "इंडेक्स" में रखने की जरूरत है।

मेरा मानना ​​है कि इस फ़ाइल को हटाकर, git रेपो को फिर से अनुक्रमित करेगा, एक नया बनाएँ और आप जाने के लिए अच्छा है। यह इस समस्या को हल करता है क्योंकि स्थानीय रिपॉजिटरी को उस फ़ाइल के बिना फिर से अनुक्रमित किया जाता है जिसे मैंने हटा दिया था जिससे सभी उपद्रव हुए थे।

संपादित करें: ऐसा लगता है कि यह मैक संबंधित (टिप्पणियों के आधार पर) है, इसलिए अगर यह OSX 10.10 पर मदद करता है और शराब संस्करण 2.3.4 काढ़ा के रूप में स्थापित होता है।


1
हाँ, यह काम किया और स्पष्टीकरण के लिए धन्यवाद। ऐसा करने से पहले यहां एक चेतावनी दी गई है कि आप उन फ़ाइलों को हटा दें या हटा दें या हटा दें जिन्हें आपने वर्तमान डिफ़ॉल्ट परिवर्तन सूची में नहीं जोड़ा है। वे साथ में वापस ले लिया जाएगाgit add -A
किर्बी

4
Mac OS X Yosemite पर इसकी पुष्टि करें। एंड्रॉइड स्टूडियो में काम करते समय हुआ, हालांकि कोई विशिष्ट प्रजनन योग्य परिदृश्य नहीं थे ..
ड्रू

4
यह सही उत्तर होना चाहिए क्योंकि यह काम करता है और इसकी एक बेहतर व्याख्या है। यह मेरे साथ भी हुआ।
जेरेड बुरो

1
मेरे लिए भी काम किया। IntelliJ में वर्जन कंट्रोल रूट को जोड़ने से इसे बोर किया गया लेकिन git इंडेक्स को ठीक करने में काम किया। स्पष्टीकरण @grant के लिए धन्यवाद।
एंड्रयू एल्स

1
मुझे यह समस्या तब भी हुई जब IntelliJ पृष्ठभूमि में चल रही थी जब मैं विम के साथ कुछ संशोधन कर रहा था। मुझे लगता है कि एक दौड़ की स्थिति थी git। (वास्तव में, मुझे लगता है कि उनमें से बहुत सारे हैं।) इंटेलीज को बंद करना, सूचकांक को हटाना, और मेरे काम को फिर से करना बहुत अच्छा काम करता है।
रॉबर्ट फिशर

119

परियोजना के लिए

rm .git/index
git reset

इंडेक्स को हटाने के बाद आपको इसे git रीसेट द्वारा रीक्रिएट करना होगा

सबमॉड्यूल के लिए:

मुख्य प्रोजेक्ट फ़ोल्डर पर जाएं

rm .git/modules/your_project_structure/index
git reset --hard HEAD

4
सूचकांक को हटाने के बाद git रीसेट ने इसे पूरी तरह से बंद कर दिया। धन्यवाद! यदि आप रीसेट नहीं करते हैं तो हर फ़ाइल इंडेक्स में नई होगी, इसलिए इसे जोड़ना होगा। रीसेट करने से ऐसा लगता है कि सूचकांक फिर से बनेगा। हालांकि मुझे समझ नहीं आ रहा है कि git इंडेक्स को कैसे बना सकता है, बिना इंडेक्स के?
जोसेफ्रे

1
@JosFaber क्योंकि सूचकांक प्रतिबद्ध नहीं है इतिहास। वास्तव में यह "बेमानी" सहायक संरचना है। Schacon.github.io/gitbook/7_the_git_index.html देखें, इसलिए इसे पूरी तरह से काम करने वाले पेड़ और HEAD की तुलना में फिर से बनाया जा सकता है। और यही वास्तव में git रीसेट करता है। मैन पेज कहता है: ... <
ट्री-

2
धन्यवाद! गिट रीसेट के बिना, यह मुझे रिपॉजिटरी में पहले से मौजूद सभी फाइलों को फिर से जोड़ना चाहता था।
रॉबर्ट बर्नस्टीन

1
मैं अपने मैक पर सॉरसेट्री का उपयोग करता हूं। मैंने मैन्युअल रूप से .it / index को हटा दिया है, फिर इस टिप्पणी के लिए अंतिम अच्छी प्रतिबद्ध, राइट क्लिक, चयनित रीसेट मास्टर (मेरे मामले में) का चयन किया - फिर मिश्रित विकल्प को चुना जो मेरे काम को एक अच्छी स्थिति में छोड़ देता है। मैं तब अपने वर्तमान कार्य को करने में सक्षम था और अब सब कुछ स्वस्थ है।
user216661

1
सबसे साफ और सबसे तेज़ तरीका!
h4rd4r7c0r3

29

आप अपने प्रोजेक्ट से Git इंडेक्स फाइल को हटा सकते हैं। अपने प्रोजेक्ट की जड़ में, निम्न कमांड चलाएँ:

rm .git/index

उसके बाद यह काम करते हैं।


3
इस सवाल का जवाब नहीं है। कृपया इस उत्तर को और अधिक विवरण के साथ दे दें।
ArtOfCode

मेरे लिए rm: /.git/index: No such file or directoryमैक OSX Yosemite काम नहीं किया ; git 2.3.4 होमब्रेव के माध्यम से स्थापित किया गया
अनुदान

@gr आपको शुरुआत में स्लैश को हटाना होगा। ( rm .git/indexअपनी गिट निर्देशिका में)।
क्रिस्टोफएलएसए

2
@ChristophLSA आपको धन्यवाद - मैंने इस विवरण के साथ उत्तर दिया कि यह क्रिया स्पष्टता प्रदान करती है। क्या यह उत्तर उचित पथ को प्रतिबिंबित करने और उपयोगकर्ताओं को सूचित करने के लिए अद्यतन किया जा सकता है कि कार्रवाई क्या करती है?
अनुदान

1
मुझे पता है कि यह क्यों काम करता है। समस्या दूषित सूचकांक के कारण होती है। मैं इस समस्या में भाग गया जब मैंने कमांड लाइन में एक प्रतिबद्ध संदेश लिखते हुए IntelliJ में कोड को संशोधित करके सूचकांक को भ्रष्ट कर दिया। सूचकांक को हटाने से आपके परिवर्तन नष्ट नहीं होते हैं, यह बस उन्हें अस्थिर करता है।
पाइरोलॉजिकल

3

मैं एक अलग समाधान की कोशिश करता हूं और यह मेरे लिए काम करता है। नीचे मेरे विकल्प हैं

#cd .git
#rm index
#cd ..
#git add .

जैसा कि @farincz ने कहा, आपको कॉल करके फिर से सूचकांक को फिर से बनाना होगा git resetअन्यथा यह आपको देता है fatal: Could not reset index file to revision 'HEAD'
कुस्कमेन

1

यदि यह एक सबमॉड्यूल में होता है

इंडेक्स फाइल पैरेंट .gitडायरेक्टरी के अंदर स्थित है :

.git/modules/your_project_structure/index

एक सबमॉड्यूल में, कोई निर्देशिका नाम नहीं है .git(कम से कम परियोजना में मैं काम कर रहा हूं), केवल एक .gitफाइल है जो आपको (और गिट) बताती है जहां उस परियोजना की गिट निर्देशिका को देखना है।

Git स्थिति उन परिवर्तनों को दिखाती है जो मैंने नहीं किए

अनुक्रमणिका फ़ाइलों को हटाने के बाद, और एक करने के बाद git reset, मैंने पाया कि मैं बहुत सारे बदलावों का सामना कर रहा हूँ और एक कठिन रीसेट मदद नहीं कर रहा था।

चेतावनी आप अपने सभी परिवर्तनों को खो देंगे, इसलिए उन्हें जारी रखें और जारी रखने से पहले धक्का दें।

सूचकांक दूषित लग रहा था, इसलिए मैंने इसे निम्न आदेशों के साथ हटा दिया।

git rm -rf --cached .
git reset --hard HEAD

0

मुझे सिर्फ जीथब डेस्कटॉप क्लाइंट (OSX) के साथ यह त्रुटि मिली। मैंने केवल इतना किया कि ऐप छोड़ दिया और फिर से खोल दिया और फिर काम करना शुरू कर दिया।

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