git - 为 git 存储库中的每个文件配置编码以正确输出“git diff”
问题描述
假设我的 git 存储库中有两个具有不同编码的文件:UTF-8 和 CP866。我有控制台等配置了 UTF-8 设置。
我想要 git 命令的输出,例如git diff
或git show
正常运行,并且不显示类似的内容:
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 格式存储,并以不同的编码简单地检查其中一些文件。然后 Git 将按预期显示差异,但您的工作树将具有正确编码的文件。
您可以通过.gitattributes
在存储库的根目录中创建一个如下所示的文件来执行此操作:
myfile.tex working-tree-encoding=CP866
(您可能更喜欢使用IBM866
,因为这是标准名称,它可能得到更广泛的支持。)如果您希望文件在您的系统上仅使用 CP866 并让其他人使用 UTF-8 版本,那么您可以输入此条目in.git/info/attributes
而不是将其签入回购。
您还可以在 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'
推荐阅读
- php - 类在作曲家的 PHP 中找不到异常
- java - 在Tomcat中多次重新部署Web应用程序后如何解决Metaspace OOM?
- python - 如何从列表列表中提取单词并按长度过滤单词?
- java - “HashMap”中的“volatile”关于“modCount”
- xbox - 第一次观看视频时支持 mime 类型,但在包中其他时间不支持
- s4sdk - 使用 App-To-App SSO 向 S/4 的主体传播
- ruby-on-rails - 如何修复找不到'activesupport' (= 6.0.0.rc1) - 确实找到了:[activesupport-5.2.3] (Gem::MissingSpecVersionError)
- php - wordpress 中查看页面源“冗余空白行”时出错
- numpy - 为什么三角函数计算的结果不同?
- selenium-webdriver - 如何使用 selenium 获取链接并使用 beautifulsoup 进行抓取?