私は.gitconfig
ファイル:
[user]
name = myname
email = [email protected]
[core]
autocrlf = true
excludesfile = C:\\Users\\myname\\Documents\\gitignore_global.txt
[diff]
tool = meld
[difftool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
Prompt = false
[merge]
tool = meld
[mergetool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
cmd = 'C:/Program Files (x86)/Meld/meld/meld.exe' \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = true
そしてSourcetreeでは、次の設定があります:
ただし、Sourcetreeでファイルを右クリックして外部diffを実行すると、Meldを開くことができましたが、ファイルの内容がまったく表示されませんでした。
設定で何が悪いのですか?
既存の回答は少しポイントを逃したと思います。ここに私自身のドッグフードがあります:
引数の詳細:
Diff: $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
ために External Diff
、引数リストから$ BASEを削除する必要があります。
3者間マージの場合、External Merge Tool
オプション。代わりに、解決されていない競合がある場合にのみ使用できます。
Sourcetree + Meldに制限されていない場合は、 Git Extensions + KDiff suiteと見なしますまた、優れたオープンソースの代替手段になる可能性もあります。
実際の3ウェイマージを行うためにここで使用する実際の設定は、読み取り専用のTHEIRSおよびMINEタブのみです。
$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
=
後--output
。
この質問の2番目の回答のコメントを掘り下げることで、ようやくこのコマンドを正しく取得できました Meldを使用したgitマージ 。
PATH環境変数を変更したくない場合は、DOS互換の短い名前を使用できます。
C:\Progra~1 = C:\Program Files
C:\Progra~2 = C:\Program Files (x86)
これにより、パス内の問題の原因となるスペースが回避され、Sourcetreeでニースが再生されます。ハッカですが、動作します。次に、Meldへのパスとして次のようなものを使用できます。
C:\Progra~1\Meld\meld.exe
Progra〜1が64ビットのディレクトリにマップすることは保証されていない可能性があるため、どのマップにマップするかを試す必要がある場合があります。
Meld.exeの場所をPATH(例:C:\ Program Files(x86)\ Meld)に追加してから、Diffコマンドで、フルパスの代わりにmeldを入力してください。要旨WindowsのSourcetreeでmeldを使用する方法を参照してください。