gpt4 book ai didi

git diff 在尖括号中显示 unicode 符号

转载 作者:IT王子 更新时间:2023-10-29 01:24:24 24 4
gpt4 key购买 nike

我有一个带有 unicode 符号的文件(俄文文本)。当我修复一些拼写错误时,我使用 git diff --color-words=. 来查看我所做的更改。

如果是 unicode(西里尔文)符号,我会像这样用尖括号搞得一团糟:

$ cat p1
привет

$ cat p2
Привет

$ git diff --color-words=. --no-index p1 p2
diff --git 1/p1 2/p2
index d0f56e1..d84c480 100644
--- 1/p1
+++ 2/p2
@@ -1 +1 @@
<D0><BF><9F>ривет

看起来 git diff --color-words=. 正在检查字节之间的差异,而不是我预期的符号之间的差异。

有什么方法可以让 git 正确处理 unicode 符号吗?

UPD 关于我的环境:我在 Mac OS 和 Linux 主机上得到相同的结果。

我的 shell 变量是:

BASH=/bin/bash
HOSTTYPE=x86_64
LANG=ru_RU.UTF-8
OSTYPE=darwin10.0
PS1='\h:\W \u\$ '
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
TERM=xterm-256color
TERM_PROGRAM=iTerm.app
_=-l

我已将 git config 重置为默认设置,如下所示:

$ git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true

git 版本

$ git --version
git version 1.7.3.5

最佳答案

对我来说 less — git pager — 是罪魁祸首(感谢@kostix)。通过完全禁用寻呼机进行实验:

git --no-pager diff p1 p2

我的案例是包含表情符号的提交消息;不过,这基本上是同一个问题。

$ git log --oneline
93a1866 <U+1F43C>

$ git --no-pager log --oneline
93a1866 🐼

$ export LESS='--raw-control-chars'
$ git log --oneline
93a1866 🐼

$ git config --global core.pager 'less --raw-control-chars'
$ git log --oneline
93a1866 🐼

注意:--RAW-CONTROL-CHARS 选项导致 less 通过 ANSI 颜色转义,但仍会破坏其他控件字符(包括表情符号)。我的 less 全局配置了 --RAW-CONTROL-CHARS 和我的 git pager 如上所述 --raw-control-chars

关于git diff 在尖括号中显示 unicode 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17320721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com