gpt4 book ai didi

git - 在 git 存储库中为每个文件配置编码以正确输出 `git diff`

转载 作者:行者123 更新时间:2023-12-04 15:42:19 24 4
gpt4 key购买 nike

假设我的 git 存储库中有两个具有不同编码的文件:UTF-8 和 CP866。我已使用 UTF-8 设置配置了控制台等。

我希望像 git diffgit show 这样的 git 命令的输出表现正常,而不是显示类似的东西:

diff --git a/myfile.tex b/myfile.tex
index 01ad4f3..b1fd24c 100644

--- a/myfile.tex
+++ b/myfile.tex
@@ -220,9 +220,9 @@ centertags]%
-<A3><A4><A5> $f_i \in k[x_1, \ldots , x_n]$, <A8><AC><A5><A5><E2> <E0><A5>襭<A8><A5> $(a_1, \dots, a_n)$. <92><AE><A3><A4><A0> <AF><AE><AB><A8><AD><AE><AC><A8><A0><AB>쭠<EF> <E1><A8><E1>⥬<A0> $\{ R(f_1,f_i) = 0 \}$ <A4><AB><EF> $i = 2, \dots, n$, <A3><A4><A5> $f_i$ <E0><A0><E1>ᬠ<E2>ਢ<A0><A5><E2><E1><EF> <AA><A0><AA> <AF><AE><AB><A8><AD><AE><AC> <AE><E2> $x_n$ <AD><A0><A4> <AA><AE><AB><EC>殬 $k[x_1, \ldots , x_{n-1}]$,
<E1><AE><E1>⮨<E2> <A8><A7> $n-1$ <E3>ࠢ<AD><A5><AD><A8><A9> <AE><E2> <AF><A5>६<A5><AD><AD><EB><E5> $x_1, \dots x_{n-1}$, <A8> <A8><AC><A5><A5><E2> <E0><A5>襭<A8><A5> $(a_1, \dots, a_{n-1})$.
+<A

有一个选项可以为所有文件设置编码转换:

git config --local core.pager "iconv -f cp866 -t utf-8 | less"
git config --local i18n.commitEncoding utf8
git config --local i18n.logoutputencoding cp866

但我的目标是以某种方式设置每个文件的编码转换。我希望我的 UTF-8 文件和 CP866 文件能够正确处理。

有解决办法吗?

最佳答案

如果你有一个相当新的 Git,你可以让 Git 以 UTF-8 格式存储存储库中的所有文件,并简单地以不同的编码 checkout 其中的一些文件。 Git 随后将按预期显示差异,但您的工作树将具有正确编码的文件。

您可以通过在存储库的根目录中创建一个 .gitattributes 文件来完成此操作,如下所示:

myfile.tex working-tree-encoding=CP866

(您可能更喜欢使用 IBM866,因为这是标准名称并且可能得到更广泛的支持。) UTF-8 版本,那么您可以将此条目放入 .git/info/attributes 而不是将其 checkin repo。

您还可以在 gitattributes 文件中指定(几乎)任何您可以在 gitignore 文件中指定的模式,例如,您可以使用通配符。

添加 .gitattributes 文件后,您应该运行 git add --renormalize . 以确保所有文件都使用正确的编码,然后提交所有更改。

新存储库的一组示例步骤:

git init
printf 'a\xffb\n' >myfile.tex
git add myfile.tex
git commit -m 'Add CP866 file'
# You are here.
echo 'myfile.tex working-tree-encoding=CP866' >.gitattributes
git add --renormalize .
git commit -m 'Store files as UTF-8'

关于git - 在 git 存储库中为每个文件配置编码以正确输出 `git diff`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57402900/

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