从理论上讲,当在windows机器上工作时,人们应该使用设置为true的core.autocrlf。
我的windows机器git配置设置是core.autocrlf=true
但是,当我克隆gitlab存储库时,我可以看到一些sh文件在\r中完成了它们的行。
(我通过做cat -A thefile.sh来做到这一点)。
当我将这些文件复制到linux环境并尝试运行它们时,这会引发各种问题。
作为参考,我在一台linux机器(未设置该配置)中克隆了相同的gitlab代码库,并且sh文件中没有\r。
我的问题是,我如何解决这个问题?
将core.autocrlf设置为input并再次克隆存储库会有帮助吗?这些\r是什么时候引入的?
发布于 2021-07-06 13:46:52
我应该使用的正确core.autocrlf设置是什么?
很简单:false。
core.autocrlf适用于所有文件(包括二进制文件),并且可能会在检出时损坏它们。
即使是core.safecrlf也太包罗万象了。
我更喜欢使用.gitattributes eol directives,您可以精确地为每个文件指定所需的内容。
另外:
git config是本地的,并且没有版本化:您将依赖其他开发人员进行完全相同的“正确”configuration;.gitattributes版本化:其他开发人员将从中受益automatically;core.autocrlf将覆盖任何.gitattributes仔细设置的指令。因此,在您的示例中,在.gitattributes文件中:
*.sh eol=lf在"Force LF eol in git repo and working copy“中可以看到更多的例子。
注意:
在以下位置完成了它们的行\r
我更怀疑的是:\r\n而不是\r (参见Newline representation)
https://stackoverflow.com/questions/68264886
复制相似问题