'git add --renormalize .' 什么都不做,如何解决?

`git add --renormalize .` doesn't do a thing, how to fix it?

提问人:tribbloid 提问时间:11/17/2023 最后编辑:tribbloid 更新时间:11/17/2023 访问量:39

问:

我有以下定义:.gitattributes

*.sh text eol=lf

* text eol=crlf

如果 git 工作正常,它应该重新格式化当前目录下的所有文件,以用作唯一的行尾。*.shlf

不幸的是,运行后,什么也没发生。git add --renormalize .

怎么会这样呢?这个功能的 git 实现有问题吗?如果不是,要执行的正确命令是什么?.gitattributes

git 换行符 gitattributes 行尾

评论

0赞 Charles Duffy 11/17/2023
您是否希望它会影响磁盘上的文件或记录在暂存区域中的文件?
1赞 LeGEC 11/17/2023
当我将您的内容粘贴到测试存储库中时,我反复得到:(参考第三行的第二行)。我认为您必须更明确地了解文本文件是什么。gitattributes* is not a valid attribute name: .gitattributes:3**
1赞 LeGEC 11/17/2023
你有什么?我的是 2.42.0,它可能比旧版本更详细地介绍某些错误。git version
0赞 tribbloid 11/17/2023
我的版本是 2.34.1,让我尝试升级......
0赞 tribbloid 11/17/2023
@LeGEC啊,对不起,我犯了一个错误(文件名也错了),它们是正确的,但效果是相同的

答:

1赞 LeGEC 11/17/2023 #1

在测试存储库中使用文件时,每次添加新文件时都会收到重复的警告:.gitattributes

* is not a valid attribute name: .gitattributes:3

*指的是你最后一行的第二行,当我将那行更改为 时,正确地保存在文件中并将我的 变成 在其他文件中(我在 linux 上运行,用** text eol=crlfgitlf.shlfcrlfgit version 2.42.0)


我认为你的不适用,因为它的内容无效。.gitattributes

也许错误消息在您的案例中没有显示 - 例如,GUI 客户端有时会隐藏警告消息--,或者旧版本的 git 没有明确警告那么多事情。

我不认为说“一切都是文本文件”是一个很好的解决方法:它会弄乱你的二进制文件,并且 tru 将 (=) 变成 (=)。\10lf\13\10crlf

你应该选择一个更明确的列表来考虑作为文本文件,或者完全删除最后一行并依赖 git 的默认行为。

如果您别有用心地绝对提交其中的文件,请更详细地解释您的要求。crlf

评论

0赞 tribbloid 11/17/2023
非常感谢,不幸的是它在 Windows 下不起作用,“sh”文件仍然随处可见 CRLF
1赞 LeGEC 11/17/2023
@tribbloid:你启用了吗?据可靠消息来源称,配置设置优先于autocrlfautocrlf.gitattributes
0赞 tribbloid 11/17/2023
啊,这可能是有道理的,让我验证一下
0赞 tribbloid 11/17/2023
现在设置为“core.autocrlf=input”,这或 null 应该是默认值
1赞 LeGEC 11/22/2023
git config --show-origin core.autocrlf将显示设置来自哪个文件