2013-03-25 6 views
6

क्या 3-तरफा मर्ज टूल में फ़ाइलों को खिलाने से पहले विवादों को हल करने के गिट के प्रयासों को पूरी तरह से बंद करने का कोई तरीका है?क्या गिट संघर्ष समाधान को बंद करने का कोई तरीका है?

मैं उन पंक्तियों का मतलब:

<<<<<<< Temporary merge branch 1 
... 
======= 
... 
>>>>>>> Temporary merge branch 2 

यह kdiff3 में खिलाने से पहले आधार फ़ाइल में उन्हें और शाखा परिवर्तन कहते हैं, और बाद में एक अजीब संघर्ष दिखा पूरी तरह से पागल हो जाता है।

मैं बस मूल संशोधन को छूना चाहता हूं।

अब तक मैं ही एकमात्र विकल्प

merge.conflictstyle 

पाया है, लेकिन यह इन पंक्तियों के बंद करने के लिए कोई विकल्प नहीं है लगता है।

क्या प्रीप्रोसेसर लिखने के अलावा कोई तरीका है जो लाइनों को पट्टी कर देगा?

अद्यतन

मैं व्याख्या करेंगे मैं यहाँ नापसंद करते हैं।

X1 
A 
X2 

और दूरदराज के संशोधन शामिल हैं::

X1 
B 
X2 

समस्या यह है कि जब Git शुरूआत kdiff3 आधार संशोधन की तरह

X1 
<<<<<<< Temporary merge branch 1 
A 
======= 
B 
>>>>>>> Temporary merge branch 2 
X2 

लाइनों स्थानीय संशोधन शामिल होता है जहां X1 और X2 कुछ सामान्य रेखाएं हैं 3 फाइलों के बीच कोड का।

अब, kdiff3 यहां एक संघर्ष को संकेत देता है।

यदि मैं फ़ाइलों को पकड़ता हूं, तो उन्हें एक अलग फ़ोल्डर में कॉपी करें और < और > के बीच सबकुछ हटा दें, kdiff3 फ़ाइलों को बेहतर ढंग से बेहतर तरीके से विलय करता है।

मैं http://www.gitguys.com/topics/merging-with-a-gui/ पर जो देख सकता हूं, ऐसा लगता है कि यह वास्तव में आधार संशोधन में रेखाएं नहीं दिखाना चाहिए। लेकिन यह करता है। मैं इसे कैसे ठीक करूं?

core.symlinks=false 
core.autocrlf=false 
color.diff=auto 
color.status=auto 
color.branch=auto 
color.interactive=true 
pack.packsizelimit=2g 
help.format=html 
http.sslcainfo=/bin/curl-ca-bundle.crt 
sendemail.smtpserver=/bin/msmtp.exe 
diff.astextplain.textconv=astextplain 
rebase.autosquash=true 
user.name=Pavel Gatilov 
user.email=******** 
merge.tool=kdiff3 
mergetool.kdiff3.path=C:/Program Files (x86)/KDiff3/kdiff3.exe 
diff.guitool=kdiff3 
difftool.kdiff3.path=C:/Program Files (x86)/KDiff3/kdiff3.exe 
difftool.kdiff3.cmd="C:/Program Files (x86)/KDiff3/kdiff3.exe" "$LOCAL" "$REMOTE" 
core.editor="C:/Program Files (x86)/GitExtensions/GitExtensions.exe" fileeditor 
core.autocrlf=false 
credential.helper=!"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe" 
core.repositoryformatversion=0 
core.filemode=false 
core.bare=false 
core.logallrefupdates=true 
core.symlinks=false 
core.ignorecase=true 
core.hidedotfiles=dotGitOnly 
core.safecrlf=true 
remote.origin.url=******** 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
branch.develop.remote=origin 
branch.develop.merge=refs/heads/develop 
gui.wmstate=normal 
gui.geometry=887x427+175+175 171 192 
branch.8480-il.remote=origin 
branch.8480-il.merge=refs/heads/8480-il 
branch.branch-9354.remote=origin 
branch.branch-9354.merge=refs/heads/branch-9354 

संस्करण

मैं का उपयोग करें::

 
Tool    Version 
------------------------ 
msysgit   1.8.1.msysgit.1 
Git Extensions 2.44 
kdiff3   0.9.97 

मुद्दा exi

Git config

git config -l इस देता है sts दोनों जब मैं Git एक्सटेंशन के माध्यम से विलय और के माध्यम से git mergetool

अद्यतन 2

मैं पूर्वप्रक्रमक आदेश kdiff3 को विन्यस्त फ़ाइलों के अवांछित भागों को दूर करने की कोशिश की है चलाने के लिए, लेकिन यह एक प्रति-लाइन पर काम करने के लिए लगता है आधार, इसलिए यह समस्या को ठीक नहीं कर सकता है।

मैं एक प्रीप्रोसेसर-रैपर लिख सकता हूं, लेकिन मैं अभी तक ऐसा नहीं करना चाहता हूं।

+1

मुझे कभी भी kdiff3 के साथ संयोजन में गिट के साथ समस्या नहीं थी और मैंने इससे संबंधित कोई भी सेटिंग नहीं बदली। तो मुझे आश्चर्य है कि आप वास्तव में क्या मतलब करते हैं जब आप कहते हैं कि kdiff "अजीब संघर्ष दिखाते हुए पूरी तरह से पागल हो जाता है"। –

+0

@DanielHilgarth कृपया, मेरे अपडेट –

+0

देखें यह नहीं होना चाहिए। आपकी मर्ज टूल कॉन्फ़िगरेशन कैसा दिखता है? –

उत्तर

1

क्या यह कॉन्फ़िगरेशन चर mergetool.<tool>.cmd स्थापित करने का मामला नहीं है, जिसमें आपके पास प्रारंभिक/डिफ़ॉल्ट विलय नहीं है।

git merge-tool के बाद मर्ज हुआ है प्रयोग किया जाता है (ताकि कहते मैनुअल)

+0

मैंने कॉन्फ़िगरेशन जोड़ा है। ऐसा लगता है कि 'mergetool.kdiff3.cmd' निर्दिष्ट नहीं है। –

5

आप Gits व्यवहार कॉन्फ़िगर करने के लिए, Git संघर्ष समाधान की बारी करने के .gitattributes में झंडे सेट कर सकते हैं, हम merge=union ध्वज का उपयोग कर सकते यह करने के लिए। धुन

*.java merge=union 
src/generated/* merge=union 

ये लाइनें:

उदाहरण

* merge=union 

इसके बजाय निर्दिष्ट करने कि सभी फाइलों को मर्ज विकल्प होता है की .gitattributes, हम भी इस फ़ाइलों की एक चयनात्मक राशि के लिए उदाहरण के लिए कर सकते हैं, जावा फाइलों के लिए विलय विकल्प, और src/जेनरेट फ़ोल्डर में सभी फाइलें।

+0

मैं फिर से ऐसा होने तक सत्यापित नहीं कर पाऊंगा, लेकिन मुझे लगता है कि यह सही है और बक्षीस का पुरस्कार देता है। – Stijn

+0

हाँ, इस मुद्दे के साथ मुश्किल हिस्सा यह है कि यह एक कृत्रिम रेपो में पुन: पेश करने के लिए काफी दुर्लभ और कठिन साबित होता है। समाधान वादा करता है, अगर मुझे अवसर है तो इसे जांच लेंगे। –

+0

मैंने अभी यह फिर से किया था और आपका समाधान काम करने लगता है। मर्ज मार्कर अभी भी $ BASE में दिखाई देते हैं, लेकिन अब वे $ MERGED में समस्याएं नहीं बनाते हैं। – Stijn

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