gpt4 book ai didi

git - git diff 输出中的重音字符

转载 作者:行者123 更新时间:2023-12-04 00:28:23 24 4
gpt4 key购买 nike

我正在尝试创建一个脚本/程序来自动化我的构建过程。我的主要目标是根据来自 git 的提交生成一个 .zip 文件。为此,我正在使用 git diff 来输出此次提交中更改的文件列表,我正在使用以下命令:

git  --no-pager diff --no-renames --name-only --diff-filter=ACM <commit_id>

问题是当文件名或文件夹有一些葡萄牙语特殊字符时,它们会像代码一样返回。例如,我有一个名为的文件夹:

db/alterações/2020-04-30.sql

它像列表中那样返回:

db/altera\303\247\303\265es/2020-04-30.sql

如何让 git 返回特殊字符而不是这些代码?

最佳答案

Git 使用 core.quotePath 的设置生成这些文件名,默认为 true。当此选项为真时,设置了最高位的字节以八进制引用。 When the option is false, they are not, but other control characters still are.

此外,如果您使用 -z,Git 会生成以 NUL 结尾的字符串并且不会引用字符。如果换行符和制表符出现在文件名中,这还有利于妥善处理它们。

因此,如果您的程序可以将 NUL 字节作为终止符处理,请这样写:

git  --no-pager diff --no-renames --name-only --diff-filter=ACM -z <commit_id>

如果没有,你可以这样写:

git -c core.quotepath=false --no-pager diff --no-renames --name-only --diff-filter=ACM \
<commit_id>

关于git - git diff 输出中的重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61612626/

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