如何在 WSL2 上将 Meld 用作 git mergetool & difftool?

How to use Meld as git mergetool & difftool on WSL2?

从 WSL2 (Ubuntu) 如何使用 Windows 上本地安装的 Meld 作为 git 合并和差异工具? 因此来自 WSL 的 git mergetoolgit difftool 之类的命令在 Windows.

上打开 Meld

通过链接使 meld 在 WSL 中易于访问:

sudo ln -s /mnt/c/Program\ Files\ \(x86\)/Meld/Meld.exe /usr/local/bin/meld

在 WSL 中编辑 ~/.gitconfig 并添加:

[diff]
        tool = meld
[difftool "meld"]
        cmd = meld \"$(wslpath -aw $LOCAL)\" \"$(wslpath -aw $REMOTE)\"
[merge]
        tool = meld
[mergetool "meld"]
        cmd = meld --auto-merge \"$(wslpath -aw $LOCAL)\" \"$(wslpath -aw $BASE)\" \"$(wslpath -aw $REMOTE)\" --output \"$(wslpath -aw $MERGED)\" --label=Local --label=Base --label=Remote --diff \"$(wslpath -aw $BASE)\" \"$(wslpath -aw $LOCAL)\" --diff \"$(wslpath -aw $BASE)\" \"$(wslpath -aw $REMOTE)\"

要使 git difftool --dir-diff 正常工作,您需要将其与 --no-symlinks 一起使用(从 Windows 应用程序打开时,\wsl$\ 中的符号链接目前似乎无法正常工作).一旦 Meld 关闭,更改仍将被复制回源文件。因为我经常使用 git dir diff 工具,所以我在上面的文件中添加了这些别名:

[alias]
        dt = !git difftool --dir-diff --no-symlinks -t meld
        mt = !git mergetool -t meld