web-dev-qa-db-ja.com

Git ExtensionsでWinmergeを使用する方法は?

Git Extensions を使用しており、マージの競合を解決するための差分ツールとしてKDiffをプリインストールして設定しています。しかし、私はWinmergeがとても好きなので、KDiffをWinmergeに置き換えたいと思います。

Git Extensionsの設定には、Mergetoolを変更する設定がありますが、使用する構文とその理由を理解することはできません。 4つの変数があるようです:$ BASE、$ LOCAL、$ REMOTE、$ MERGED。これらをWinMergeU.exeに渡す必要があるようですが、どのコマンドラインパラメーターを使用しますか?

私はこれを数回検索しようとしましたが、実際に機能すると思われる答えはありません。

50
sebastiaan

概要
以下は、GITバージョンコントロールをセットアップして、デフォルトのインストールよりも優れたツールセットを使用できるようにするための手順です。このセットアップでは、GIT Extensionsが既にインストールされている必要があり、GIT ExtensionsでWinmergeを構成する必要があります。

インストール
すべてのプロンプトを確認し、Winmergeのデフォルトディレクトリにインストールします。

GITバージョン管理でWinmergeを設定
テキストエディタで新しいドキュメントを開きます。以下をコピーして貼り付け、ドキュメントを「wMerge.sh」として「C:\ Program Files(x86)\ Git\bin \」ディレクトリに保存します。

_echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2"
_

「Users-> username」ディレクトリに移動して、.gitconfigファイルを見つけます。お気に入りのエディターで開き、次のコードをコピーして貼り付けて保存します。

_[user]
    name = enter your name
    email = [email protected]
[core]
    autocrlf = false
[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = wMerge.sh \"$MERGED\" \"$REMOTE\"
    path = c:/Program Files (x86)/winmerge/winmergeu.exe
[mergetool]
    keepBackup = false
    trustExitCode = false
[diff]
    guitool = winmerge
[difftool "winmerge"]
    path = c:/Program Files (x86)/winmerge/winmergeu.exe
    cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\"
_

「GitExtensions」を実行し、「ツール」->「設定」->「Git拡張機能」->「Git Config」に移動します。インストールを適切に行い、ツールをディレクトリで参照した場合、グローバル設定ページは次のようになります(注:名前とメールに名前を入力してください)。

mergetool:winmerge
mergetoolへのパス:c:/Program Files (x86)/winmerge/winmergeu.exe
mergetoolコマンド:_wMerge.sh "$MERGED" "$REMOTE"_
difftool:winmerge
difftoolへのパス:c:/Program Files (x86)/winmerge/winmergeu.exe
difftoolコマンド:"c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"

行末:そのままチェックアウト、そのままコミット

チェックリストタブに移動して、GITがすべて「グリーン」であり、セットアップに満足していることを確認します。

48
foxtrotZulu

Git Extensions v2.47.3では、これを設定するのは本当に簡単です。

[設定]-> [グローバル設定]-> [Mergetool]のドロップダウンで手動でWinMergeと記述し、奇跡を監視します。

「Difftool」ドロップダウンでも同じです。

enter image description here

||   ||   ||
\/   \/   \/

enter image description here

「WinMerge」オプションがドロップダウンに事前に入力されていないのは愚かなことです。しかたがない。

22

Windows 7では、これが最終的に私にとってうまくいったことです。プログラムファイルパスを囲む"'c:/path/here'"引用符に注意してください。

[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED"
[diff]
    tool = winmerge
[difftool "winmerge"]
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr
10
TimDog

@sebastiaanの答えは私にとってはうまくいきませんでした(おそらく時代遅れですか?)

これらは、GitExtensions 2.28を使用して機能する「グローバル設定」です。

マージツール:winmerge
mergetoolへのパス:D:/path/to/WinMerge/WinMergeU.exe
Mergetoolコマンド:"D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
これにより、WinMergeはgitによって生成された「競合ファイル」を使用します。
-e Escキーを押してwinmergeを閉じることができます。

Difftool:winmerge
difftoolへのパス:D:/path/to/WinMerge/WinMergeU.exe
Difftoolコマンド:"D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dlおよび-dr左右のペインの説明を設定します。

8
foraidt

構成ファイルで次を追加または変更します。

[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"

このソリューションは、次の2つの点で異なります。

  1. 単純にWinMergeU.exe *conflictfile*を呼び出しますが、両側呼び出しは、左側のウィンドウに、$ MERGEDに含まれる<<<<<<<=======、および>>>>>>>マーカーが表示されるという事実に悩まされます。
  2. リポジトリごとにmergetoolを適用します-$ GIT_DIR/configファイルを編集しています。 --systemまたは--global引数を指定せずにgit configを呼び出すと、同じ結果が得られます。これは、 選択する構成のいくつかの範囲 があることに注意することです。

$ PROGRAMFILES変数はgit bashによって維持され、ネイティブWindows cmdの同様の変数とは異なり、「Program Files(x86)」に移動します。

3
Pawel Piskorski