Git Extensions を使用しており、マージの競合を解決するための差分ツールとしてKDiffをプリインストールして設定しています。しかし、私はWinmergeがとても好きなので、KDiffをWinmergeに置き換えたいと思います。
Git Extensionsの設定には、Mergetoolを変更する設定がありますが、使用する構文とその理由を理解することはできません。 4つの変数があるようです:$ BASE、$ LOCAL、$ REMOTE、$ MERGED。これらをWinMergeU.exeに渡す必要があるようですが、どのコマンドラインパラメーターを使用しますか?
私はこれを数回検索しようとしましたが、実際に機能すると思われる答えはありません。
概要
以下は、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がすべて「グリーン」であり、セットアップに満足していることを確認します。
Git Extensions 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を使用して機能する「グローバル設定」です。
マージツール: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
左右のペインの説明を設定します。
構成ファイルで次を追加または変更します。
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
このソリューションは、次の2つの点で異なります。
WinMergeU.exe *conflictfile*
を呼び出しますが、両側呼び出しは、左側のウィンドウに、$ MERGEDに含まれる<<<<<<<
、=======
、および>>>>>>>
マーカーが表示されるという事実に悩まされます。$ PROGRAMFILES変数はgit bashによって維持され、ネイティブWindows cmdの同様の変数とは異なり、「Program Files(x86)」に移動します。