适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError
Posted
技术标签:
【中文标题】适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError【英文标题】:Windows Subsystem for Linux git mergetool meld UnicodeDecodeError 【发布时间】:2019-01-09 13:59:21 【问题描述】:我是 WSL(适用于 Linux 的 Windows 子系统)用户。 我使用 WSL 在我的主机和远程编译机 (RedHat) 之间简单地同步源代码。我找到了这样一篇文章:
https://www.deptagency.com/en-gb/story/using-meld-as-a-git-merge-tool-on-windows/
从 WSL 中触发和运行 GUI 窗口。
但是按照本文中的步骤进行操作后,我收到了这个错误消息(我已经检查过 windows EoL 是否通过):
Traceback(最近一次调用最后一次): 文件“bin/meld”,第 328 行,在结构化日志适配器中 UnicodeDecodeError:“utf-8”编解码器无法解码位置 103 中的字节 0x93:无效起始字节
你有什么想法吗?
提前致谢, BR
【问题讨论】:
这里有一个错误报告:Meld Windows shows error when git external call it (#222) · Issues · GNOME / meld · GitLab,它看起来像一个绑定错误。 【参考方案1】:您是否尝试过当前版本的 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
#!/bin/bash
/mnt/c/Program\ Files\ \(x86\)/Meld/Meld.exe $@
使脚本可执行
sudo chmod +x meld
将脚本移至/usr/bin
sudo mv meld /usr/bin
然后,在~/.gitconfig
添加/编辑以下内容
[merge]
tool = meld
[mergetool "meld"]
cmd = meld --diff \"$BASE\" \"$LOCAL\" \"$REMOTE\" --output \"$MERGED\"
导航到有合并冲突的 git 目录
运行
git mergetool
享受吧!
【讨论】:
【参考方案2】:我不确定它是否会回答这个问题,但我需要在 WSL2 中运行 meld
。尝试过apt install meld
,但因为它是 Windows,所以它不运行 GTK 应用程序。所以我所做的就是简单地在 Windows 版本的 Meld 之间使用符号链接:
ln -s /mnt/c/Program\ Files\ \(x86\)/Meld/Meld.exe /usr/local/bin/meld
瞧!
【讨论】:
效果很好。正是我在 Win10 上的 WSL2 所需要的。以上是关于适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError
WSL(Windows Subsystem for Linux) 适用于Linux的Windows子系统
带有适用于 Linux 的 Windows 子系统的 Windows 10 上的 VSCode 中的 Typescript 构建任务