2013-03-25 21 views
6

3-wayマージツールにファイルを渡す前に、gitの衝突を完全に無効にする方法はありますか?gitの競合解決を無効にする方法はありますか?

は、私はそれらの行を意味:

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

それはKDiff3のにそれを供給する前に、ベースファイルにそれらとブランチの変更を追加し、以降1は奇妙な競合を示す完全に発狂します。

基本リビジョンを変更しないでください。

は、これまでのところ、私は唯一のオプション

merge.conflictstyle 

を見つけたが、これらの行をオフにするオプションが用意されていないようです。

行を削除するプリプロセッサを書く以外の方法はありますか?

UPDATE

私はここに嫌い何を説明します。

X1 
A 
X2 

とリモートリビジョンが含まれています:

X1 
B 
X2 

問題は、Gitの起動がKDiff3のときBASEリビジョンが

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

ような行LOCALリビジョンが含まれているが含まれていることですX1X2はいくつかの共通の行です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の設定

git config -lは、この与えSTS両方のときに私はGitの拡張機能を経由して、私は、ファイルの不要な部分を削除するにはKDiff3のプリプロセッサコマンドを設定しようとしましたが、あたりのラインで動作するようですUPDATE 2

git mergetoolを経由してマージを実行問題を解決することはできません。

私はプリプロセッサ・ラッパーを書くことができましたが、まだそれをしたくありません。

+1

kdiff3と組み合わせてgitに問題が発生したことはありませんでしたが、これに関する設定は変更されませんでした。だから、kdiffが「奇妙な葛藤を見せている」と言ったときに、あなたが正確に何を意味するのだろうか。 –

+0

@DanielHilgarth Please、私の更新を見てください –

+0

それはしないでください。マージツールの設定はどのようなものですか? –

答えて

1

設定変数mergetool.<tool>.cmdを設定しても、初期/デフォルトのマージがまったくないというわけではありません。

git merge-toolがマージが起こった後を使用しているあなたはGitの紛争解決のオンにする、GITSの動作を設定するには、.gitattributesにフラグを設定することができます

+0

設定を追加しました。 'mergetool.kdiff3.cmd'が指定されていないようです。 –

5

、我々はmerge=unionフラグを使用することができます(そのためのマニュアルは言います)これをする。

* merge=union 

代わりに、すべてのファイルが何のマージオプションが用意されていないことを指定するので.gitattributes、我々はまた、例えば、ファイルの選択量のためにこれを行うことができます。

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

これらの行を調整しますjavaファイルのマージオプション、およびsrc/generatedフォルダ内のすべてのファイル。

+0

これが再び起こるまで私は確認できませんが、私はそれが正しいと仮定し、賞金を授与します。 – Stijn

+0

ええ、この問題の難しい部分は、非常にまれで人工的なレポでは再現するのが難しいことが判明しています。ソリューションは有望に見えますが、私は機会があればそれをチェックします。 –

+0

私はちょうどそれが再び発生し、あなたのソリューションは動作するようです。マージマーカーは$ BASEに表示されますが、もはや$ MERGEDでは問題が発生しません。 – Stijn

関連する問題