Git 拡張機能で Winmerge を使用するにはどうすればよいですか?
-
20-09-2019 - |
質問
使っています Git 拡張機能 また、マージ競合を解決するための差分ツールとして KDiff がプレインストールされ、セットアップされます。しかし、私は Winmerge がとても気に入っているので、KDiff を Winmerge に置き換えたいと思っています。
Git Extensions の設定に Mergetool を変更する設定があるのですが、どのような構文を使用すればよいのか、またその理由がわかりません。変数は 4 つあるようです。$BASE、$LOCAL、$REMOTE、$MERGED。これらを WinMergeU.exe に渡す必要があるようですが、どのコマンド ライン パラメータを使用すればよいでしょうか?
これについて何度か検索しようとしましたが、実際に機能すると思われる答えはありません。
解決
概要
以下は、デフォルトのインストールよりも優れたツール セットを使用できるように、GIT バージョン コントロールをセットアップする方法の手順です。セットアップには、GIT 拡張機能がすでにインストールされている必要があり、GIT 拡張機能で 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 = youremail@yourdomain.com
[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 Extensions -> Git Config」に進みます。インストールを適切に実行し、ツールをそのディレクトリに参照した場合、グローバル設定ページは次のようになります (注:お名前とメールアドレスにあなたのお名前をご記入ください):
マージツール: winmerge
マージツールへのパス: c:/Program Files (x86)/winmerge/winmergeu.exe
マージツールコマンド: wMerge.sh "$MERGED" "$REMOTE"
差分ツール: winmerge
difftool へのパス: c:/Program Files (x86)/winmerge/winmergeu.exe
difftool コマンド: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"
行末:そのままチェックアウト、そのままコミット
チェックリスト タブに移動して、GIT がすべて「グリーン」であり、設定に満足していることを確認します。
他のヒント
は、Gitの拡張機能v2.47.3で、それはこれを設定するのはとても簡単です。
設定 - >グローバル設定 - >ドロップダウンで「Mergetool」書き込みのための手動:WinMerge
と奇跡を見て
'Difftool' ドロップダウンのための同じ。
|| || ||
\/ \/ \/
それはWinMergeの 'オプションがドロップダウンに事前に入力されていないことだけ愚かです。まあます。
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
sebastiaanの答え@(多分それは古くなっている?)私のために動作しませんでした。
GitExtensions 2.28を使用して私のために働くこれらは、 "グローバル設定" ます:
Mergetool:winmerge
mergetoolへのパス:D:/path/to/WinMerge/WinMergeU.exe
Mergetoolコマンド:"D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
これはgitのことで生成された「競合ファイル」を使用するWinMergeの原因となる。
-e
はWinMergeのを閉じるためにESCを押すことができます。
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
は左と右ペインのための記述を設定します。
構成ファイルに次の内容を追加または変更します。
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
このソリューションは次の 2 つの点で異なります。
- ただ電話をかけるだけ
WinMergeU.exe *conflictfile*
, 、一方、双方向通話は左側のウィンドウが表示されるという事実に悩まされます。<<<<<<<
,=======
, 、 そして>>>>>>>
$MERGED に含まれるマーカー。 - リポジトリごとにマージツールを適用します。$GIT_DIR/config ファイルを編集しています。--system または --global 引数を指定せずに git config を呼び出しても、同じ結果が得られます。あることに注意してください。 いくつかの構成範囲から選択可能.
$PROGRAMFILES 変数は git bash によって維持され、(ネイティブ Windows cmd の同様の変数とは異なり) 「Program Files (x86)」に移動します。