2010-02-22 18 views
24

में "CONFLICT (हटाएं/संशोधित करें)" को हल करें एक शाखा में एक शाखा में एक फ़ाइल बदल दी गई है और परिवर्तन हुआ है। अब एक और शाखा बी में एक ही फाइल संपादित और नाम बदल दी गई है।गिट

बी में एक विट विलय करने पर विवाद ठीक से पहचानता है (CONFLICT (हटाएं/संशोधित करें)) और दोनों फ़ाइलें कार्यशील निर्देशिका में हैं।

यदि मुझे पता है कि एक फ़ाइल में दोनों बदलाव होना चाहते हैं, तो मैं यह कैसे कर सकता हूं?

गिट मर्ज-फ़ाइल है - यदि मैं सही हूं - दोनों फाइलें और एक आम पूर्वज की उम्मीद है। लेकिन बाद में कैसे देना है? मैं कैसे कह सकता हूं "$ प्रतिबद्धता से $ पथ का उपयोग करें" या ऐसा कुछ?

उदाहरण:

mkdir git-rename-repo 
cd git-rename-repo 
git init 

echo "First line" > afile 

git add . 
git commit -m "First commit in master" 
git checkout -b mybranch 

echo "Second line in mybranch" >> afile 
git mv afile bfile 

git commit -a -m "change and rename in mybranch" 
git checkout master 

echo "Changed first line in master" > afile 

git commit -a -m "changed afile" 
git merge mybranch 

मैं अब दोनों में परिवर्तन के साथ 'bfile' नाम की एक फ़ाइल हैं:

Changed first line in master Second line in mybranch

धन्यवाद

उत्तर

1

अद्यतन ठीक है, Git के पुनरावर्ती मर्ज एल्गोरिथ्म यह सिर्फ अपने आप ठीक है। मैंने अभी परीक्षण करने के लिए बहुत छोटी फाइलों का उपयोग किया ताकि सापेक्ष समानता नाम बदलने के ट्रिगर के नीचे थी।

यदि मैं दो छोटी लाइनों वाली फ़ाइल की एक पंक्ति बदलता हूं तो सापेक्ष परिवर्तन बहुत बड़ा होता है।


बेशक मैं की तरह

git show HEAD^:afile > afile_ancestor 
kdiff3 -m afile_ancestor afile bfile 

पी.एस .: ऊपर टूटा स्वरूपण के लिए खेद है कुछ कर सकते हैं। मैंने जावास्क्रिप्ट पर स्विच नहीं किया था, इसलिए मैं पूर्वावलोकन नहीं देख सका। Git rm ERD.pdf

आशा है कि मदद करता है:

10

मेरे मामले पर, यह एक नष्ट कर दिया फ़ाइल भंडार

CONFLICT (delete/modify): ERD.pdf deleted in HEAD and ... 

मैं सिर्फ क्या करने की जरूरत पर मौजूद नहीं थे।

+2

मानता है कि आप नष्ट कर दिया फ़ाइल है, जो सवाल में स्पष्ट रूप से _not true_ है स्वीकार करना चाहते हैं। –

+0

इसका मतलब है कि आपके स्थानीय में फ़ाइल नहीं है, और गिट पर यह है। आपके पास संघर्ष क्यों है- – workdreamer

+0

मूल पोस्टर (यह _not_ मुझे नहीं था) ** स्थानीय संशोधन में फ़ाइल है ** ** है। हालांकि यह ** NAMED अलग-अलग ** है। इसलिए हटाए गए संस्करण को लेने का सुझाव गलत है। परिवर्तन ** ** को इसके वर्तमान, बदले गए, नाम के तहत फ़ाइल में विलय किया जाना चाहिए। –

7

मैं भी परिदृश्य था

** टकराव (बदलें/हटाना): *** फ़ाइल का नाम प्रमुख में नष्ट कर दिया और 6efb2a94ba0601aa1ec5050ab222a0359ee8379a में संशोधित किया। फ़ाइल नाम के संस्करण 6efb2a94ba0601aa1ec5050ab222a0359ee8379a पेड़ में छोड़ दिया है। *

मैं भी समान रूप से उलझन में था और इस पोस्ट पर पहुंच गया। लेकिन टाइपिंग git status पर, सभी संदेह गायब हो गए हैं।

अनमर्ज पथ: git status, विरोध हुआ फ़ाइलों के बारे में निम्नलिखित कहा
(प्रयोग "Git/आरएम जोड़ने ..."चिह्नित करने के लिए के रूप में उपयुक्त संकल्प)

तो मैं सिर्फ git rm FileName किया था, और उसके बाद संघर्ष का समाधान हो गया।

+0

वर्कड्रीमर के लिए धन्यवाद – shah1988