2013-08-08 8 views
40

GitブランチmasterとI git merge featurebranchにいるとします。 foo.htmlに競合があります。Gitのマージの競合の「三方向差分」はどうやって見ることができますか?

私はfoo.htmlを開くと、紛争の領域で、masterには何があり、何がfeaturebranchにあるのか分かります。しかし、私は実際にと言うことができませんがに作られたのは、featurebranchと競合しました。私は唯一のマスターはを持って知っている。

diffがそれぞれ適用されます。

あるいは、同じ情報を取得するには、私が見ることができる:

  • バージョンmasterはバージョンfeaturebranchが今
  • バージョン彼らの共通の祖先がある
  • 今持っている

どうすればわかりますか? git-merge(1)から

答えて

61

代替スタイルは "のdiff3" に "merge.conflictstyle" 設定変数を設定することで使用することができます。

<<<<<<<=======、および>>>>>>>マーカーに加えて、別の|||||||マーカーの後ろに元のテキストが続きます。あなたは、オリジナルがただの事実を述べたと言うことができ、あなたの側はその声明に単に寄り添い、あきらめる一方で、反対側はより積極的な態度をとろうとしました。オリジナルを見ることによって、より良い解像度を思いつくことがあります。

がこれは

$ git config --global merge.conflictstyle diff3 
+3

これは素晴らしいことです!ありがとうございました!その間、私は 'git mergetool'を発見しました。これは(私のために)いくつかのウィンドウが' vimdiff'を開き、同様の情報を表示しますが、私はあなたの方法がより好きです。 –

+1

@NathanLong:btw、 'mergetool'は' kdiff3'を使うと本当にいいです。 – Hasturkun

12

GUIの差分の多くを使用して有効にすることができます/ツールは、3または4ウェイ・マージビューを持っているマージ。マージ競合を解決するには、Beyond Compareを強くお勧めします。別の(大丈夫)ツールはDiffMergeです。

git mergetoolコマンドで使用するカスタムmergetoolをセットアップできます。これはmsysgitを使用して、私のWindowsマシン上を越えては比較のために、私の.gitconfig設定(プロ版)であるとDiffMerge:

[merge] 
    tool = bc3 
[diff] 
    tool = bc3 
[difftool "dm"] 
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\" 
[difftool "bc3"] 
    cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\"" 
[mergetool "bc3"] 
    cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"" 

あなたはofficial Linux Kernel Git documentation for git configに様々な差分/マージツールの設定についての詳細を読むことができます。

+1

+1 Beyond Compare!私は何年もPro Editionを使い続けてきました。彼らのサポートも優れています。 – TrueWill

+0

Beyond Compareの3ウェイマージスクリーンショットは、「vimdiff」と同じウィンドウレイアウトです。 –

+2

私はこの回答の下降声についての説明を非常に高く評価します。私がいくつかの[一般的な外部差分とマージツール](http://www.codinghorror.com/blog/2005/11/in-praise-of-beyond-compare.html)のWindows上でのmsysgitインストール用の作業用の設定を提供していることを考慮して私の答えは大きな価値を提供すると思います。 –

関連する問題