如何在 WSL2 上使用 Meld 作为 git mergetool 和 difftool?

Qta*_*tax 4 git meld windows-subsystem-for-linux wsl-2

从 WSL2 (Ubuntu) 如何使用在 Windows 上本地安装的 Meld 作为 git merge 和 diff 工具?所以像git mergetool&git difftool来自 WSL 的命令在 Windows 上打开 Meld。

Qta*_*tax 5

meld通过链接它WSL方便:

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

在 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)\"
Run Code Online (Sandbox Code Playgroud)

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

[alias]
        dt = !git difftool --dir-diff --no-symlinks -t meld
        mt = !git mergetool -t meld
Run Code Online (Sandbox Code Playgroud)