web-dev-qa-db-ja.com

WindowsでSourcetreeとのマージツールとしてMeldを使用するにはどうすればよいですか?

私は.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では、次の設定があります:

Enter image description here

ただし、Sourcetreeでファイルを右クリックして外部diffを実行すると、Meldを開くことができましたが、ファイルの内容がまったく表示されませんでした。

Enter image description here

設定で何が悪いのですか?

28
mynameisJEFF

既存の回答は少しポイントを逃したと思います。ここに私自身のドッグフードがあります:

Enter image description here

引数の詳細:

Diff:  $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

ために External Diff、引数リストから$ BASEを削除する必要があります。

3者間マージの場合、External Merge Toolオプション。代わりに、解決されていない競合がある場合にのみ使用できます。

Context menu of External Merge Tool

Sourcetree + Meldに制限されていない場合は、 Git Extensions + KDiff suiteと見なしますまた、優れたオープンソースの代替手段になる可能性もあります。

28
Paris Qian Sen

実際の3ウェイマージを行うためにここで使用する実際の設定は、読み取り専用のTHEIRSおよびMINEタブのみです。

$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

=--output

この質問の2番目の回答のコメントを掘り下げることで、ようやくこのコマンドを正しく取得できました Meldを使用したgitマージ

20
Jozef Legény

OS Xの場合、次のようになります。

  • 差分コマンド:meld

    • 引数:@LOCAL @REMOTE
  • マージコマンド:meld

    • 引数:$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

追伸.

コマンドラインから使用するには、brewからインストールする必要があります:brew install meld

enter image description here

6
skywinder

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ビットのディレクトリにマップすることは保証されていない可能性があるため、どのマップにマップするかを試す必要がある場合があります。

2
pmont

Meld.exeの場所をPATH(例:C:\ Program Files(x86)\ Meld)に追加してから、Diffコマンドで、フルパスの代わりにmeldを入力してください。要旨WindowsのSourcetreeでmeldを使用する方法を参照してください。

1
redlus