适用于 Linux 的 Windows 子系统 git mergetool 融合了 UnicodeDecodeError

Seb*_*ian 5 git utf-8 meld mergetool windows-subsystem-for-linux

我是 WSL(Linux 的 Windows 子系统)用户。我使用 WSL 在我的主机和远程编译机器 (RedHat) 之间简单地 rsync 源代码。我找到了这样一篇文章:

https://www.deptagency.com/en-gb/story/using-meld-as-a-git-merge-tool-on-windows/
Run Code Online (Sandbox Code Playgroud)

从 WSL 触发并运行 GUI 窗口。

但是按照本文中的步骤操作后,我收到了这个错误消息(我已经检查过 Windows EoL 是否已通过):

回溯(最近一次调用):文件“bin/meld”,第 328 行,在结构化日志适配器中

你有什么想法?

提前致谢,BR

小智 7

我不确定它是否会回答这个问题,但我需要meld在 WSL2 中运行。尝试过apt install meld,但由于它是 Windows,它不运行 GTK 应用程序。所以我所做的就是简单地在 Windows 版本的 Meld 之间使用符号链接:

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

瞧!


小智 6

您是否尝试过当前版本的 Meld https://meldmerge.org/。我已按照提供的链接https://www.deptagency.com/en-gb/story/using-meld-as-a-git-merge-tool-on-windows/进行操作,没有任何问题。

详细步骤

从https://meldmerge.org/下载并在 Windows 10 上安装 meld

导航到您的 wsl 终端 创建一个脚本以将内容传递给 meld

nano meld
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash

/mnt/c/Program\ Files\ \(x86\)/Meld/Meld.exe $@
Run Code Online (Sandbox Code Playgroud)

使脚本可执行

sudo chmod +x meld
Run Code Online (Sandbox Code Playgroud)

将脚本移至/usr/bin

sudo mv meld /usr/bin
Run Code Online (Sandbox Code Playgroud)

然后,~/.gitconfig添加/编辑以下内容

[merge]
    tool = meld
[mergetool "meld"]
    cmd = meld --diff \"$BASE\" \"$LOCAL\" \"$REMOTE\" --output \"$MERGED\"
Run Code Online (Sandbox Code Playgroud)

导航到存在合并冲突的 git 目录

跑步

git mergetool
Run Code Online (Sandbox Code Playgroud)

享受!