2013-03-25 113 views
6

有沒有辦法完全關閉git的嘗試解決衝突之前餵養文件到3路合併工具?有沒有辦法關閉git衝突解決?

我指的是線:

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

它增加了他們和分支變化到基本文件饋入kdiff3之前,以及後來的人去完全瘋顯示怪異的衝突。

我想簡單地修改基本版本。

到目前爲止,我只找到選項

merge.conflictstyle 

,但它似乎已經沒有選擇把這些線關閉。

除了寫一個可以去除行的預處理器之外,還有什麼辦法嗎?

UPDATE

我會解釋我不喜歡這裏。

的問題是,當混帳推出kdiff3基礎版本包含了諸如

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

線的本地修訂版本包含:

X1 
A 
X2 

和遠程修訂包括:

X1 
B 
X2 

其中X1X2是一些常見的線路3個文件之間的代碼。

現在,kdiff3在這裏表示衝突。

如果我抓住這些文件,將它們複製到一個單獨的文件夾並刪除<>之間的所有內容,kdiff3會自動更好地合併文件。

從我在http://www.gitguys.com/topics/merging-with-a-gui/看到的情況看來,它實際上不應該顯示BASE修訂版中的行。但它確實如此。我如何解決它?

混帳配置

git config -l給出了這樣的:

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 STS都當我運行通過Git的擴展合併,並通過git mergetool

更新2

我試過配置kdiff3預處理命令刪除文件的不需要的部分,但它似乎在每行工作基礎,所以它不能解決問題。

我可以編寫一個預處理器包裝器,但我不想這樣做。

+1

我從未遇到與kdiff3結合使用git的問題,並且我沒有更改任何與此相關的設置。所以我想知道當你說kdiff「完全瘋狂地表現出奇怪的衝突」時,你的意思。 – 2013-03-25 13:14:38

+0

@DanielHilgarth請參閱我的更新 – 2013-03-25 13:33:09

+0

它不應該。你的合併工具配置是什麼樣的? – 2013-03-25 13:41:46

回答

1

是不是設置配置變量mergetool.<tool>.cmd的情況,因爲根本沒有初始/默認合併。

git merge-tool用於後的合併已經發生了(所以說,手冊)

+0

我已經添加了配置。它似乎沒有指定'mergetool.kdiff3.cmd'。 – 2013-03-26 04:22:07

5

您可以在.gitattributes設置的標誌配置控釋片的行爲,把混帳解決衝突,我們可以使用merge=union標誌去做這個。

例.gitattributes

* merge=union 

除了指定的所有文件沒有合併選項,我們也能做到這一點的文件的選擇性量,例如:

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

這些線路調整java文件的合併選項以及src/generated文件夾中的所有文件。

+0

在這種情況再次發生之前,我將無法驗證,但我認爲這是正確的,並獎勵賞金。 – Stijn 2016-01-20 17:00:56

+0

是的,這個問題的難點在於它在人工回購中很難再現。該解決方案看起來很有希望,如果我有機會會檢查它。 – 2016-01-29 15:09:42

+0

我剛剛發生它,您的解決方案似乎工作。合併標記仍然出現在$ BASE中,但它們不再導致$ MERGED中的問題。 – Stijn 2016-02-17 14:59:10