git - git checkout -p 指定编码
问题描述
我正在使用存储库中的混合编码文件。
我的系统 $LANG 是en_US.UTF8,文件编码是iso-8859-1。当我运行git checkout -p HEAD file
git 时,使用UTF8向我展示差异。
我看到这样的事情:
- "�" - EUR
- "�" - GBP
- "�" - JPY
+ "�" - EUR
+ "�" - GBP
+ "�" - JPY
Discard this hunk from index and worktree [y,n,q,a,d,/,j,J,g,e,?]?
问题是,“�”不是文件的正确内容。当我跑步时,iconv -f iso-8859-1 -t UTF8 file | less
我看到
"¤" - EUR
"£" - GBP
"¥" - JPY
当我在运行时接受或放弃更改时,git checkout -p
我想确切地查看更改了哪些字符而不是“�”字符,这是无用的。我该怎么做?
解决方案
如果您使用关注 的 GUI 编辑器,您应该能够通过在其命令行上LANG
临时设置来使用与终端不同的编码来调用它。LANG
例如,在 utf-8 终端中,我使用以下语法编辑 iso-8859-1 文件gvim
:
LANG=en_US.iso-8859-1 gvim file-encoded-in-latin1
您应该能够git checkout -p
通过临时更改 Git 编辑器来完成相同的临时设置:
LANG=en_US.iso-8859-1 GIT_EDITOR=gvim git checkout -p HEAD file
如果你不能使用 GUI 编辑器,我不确定你怎么能做到这一点,因为 Git 总是会向你显示文件的真实内容,并且终端控制显示编码。这就是为什么我认为你需要像这样弹出一个 GUI 编辑器。
推荐阅读
- python - 在python中的一行中编写for循环表达式,但结果不应该是一个列表
- c# - 使用 async 调用 web api 的异步方法被卡住并且没有返回给调用者
- quill - 如何更改 Quill 中的下拉文本?
- three.js - Threejs数组索引错误:索引表达式必须是常量
- google-cloud-build - 无法使用 gcr.io/cloud-builders/npm 发出网络请求
- ios - 更改默认的 UIDatePicker 并使其接受 00 作为日期和月份。像这样 00-00-YYYY
- javascript - Safari中的延迟加载错误
- javascript - Javascript 文件导入只需一次
- python - pyenv 中的普通和“-src”pypy 版本有什么区别?
- c# - 是否可以对 .NET 中的文本到语音进行调制?