2010-07-08 14 views
49

मैंने शाखा कुत्ते को पशु में विलय कर दिया। जब मैं प्रतिबद्ध करने के लिए जाओ, मैं निम्नलिखित मिल:गिट अनमज्ड पथ समस्या

एक लम्बी कहानी कम करने के लिए, मैं अलग निर्देशिका नाम और प्रत्येक शाखा में फ़ाइल नाम था। पशु शाखा में बदलाव हैं जो मैं चाहता हूं।

जब मैं सिर रीसेट करने के लिए जाता हूं, तो यह काम नहीं करता है। और जब मैं कोई अन्य गिट एक्शन (हटाने, चेकआउट, आदि) लेने के लिए जाता हूं, तो मुझे पथ नहीं मिलता है।

मुझे निष्पादित करने के लिए किन आदेशों की आवश्यकता है?

उत्तर

51

तुम सब करने की ज़रूरत है चाहिए:

# if the file in the right place isn't already checked in 
git add <path to desired file> 
# remove the "both deleted" file from the index 
git rm --cached ../public/images/originals/dog.ai 

git commit   # commit the merge 
+0

आगे स्पष्टीकरण आसान होगा –

33

इस स्थिति से निपटने रहे हैं, तो आपकी फ़ाइलों को पहले से ही में जाँच की, और आपकी फ़ाइलों मिला दिया गया है (न कि प्रतिबद्ध का एक और तरीका है, तो मर्ज संघर्ष कर रहे हैं

git reset 

इस मद में बदल जाएगा, और Git बता किसी भी विलय के विरोध भूल जाते हैं, और कार्यशील निर्देशिका छोड़ दें के रूप में: फ़ाइल में डाला) को चलाने के लिए है। फिर आप प्रश्न में फ़ाइलों को संपादित कर सकते हैं ("अद्यतन अपस्ट्रीम" नोटिस के लिए खोजें)। एक बार जब आप संघर्ष के साथ पेश किया है, तो आप

git add -p 

जो आप सहभागी आप जिन परिवर्तनों सूची में जोड़ना चाहते हैं का चयन करने की अनुमति देगा चला सकते हैं। एक बार जब सूचकांक अच्छा लग रहा है (git diff --cached), तो आपको प्रतिबद्ध कर सकते हैं, और फिर

git reset --hard 

अपने काम निर्देशिका में सभी अवांछित बदलावों को नष्ट करने के लिए।

+0

"अद्यतन अपस्ट्रीम" नोटिस क्या है? – saikosen

+2

@takias: प्रत्येक फ़ाइल में मार्कर जो दिखते हैं: '<<<<<<< [शाखा] \ n [सामग्री] \ n ==== \ n [सामग्री] \ n [शाखा] >>>>> >> '। मुझे लगता है कि प्रारूप ने इसे लिखने के बाद थोड़ा सा पीछा किया होगा, लेकिन उदाहरण के लिए https://wincent.com/wiki/Git_merge_conflict_cheatsheet देखें। – naught101

संबंधित मुद्दे