有没有办法确定现有git仓库中的行结尾?

时间:2012-08-06 07:54:49

标签: git core.autocrlf

有没有办法确定现有git存储库中的行结尾?

如果我克隆现有存储库,如何确定创建者使用了哪个core.autocrlf?

我仍然不确定core.autocrlf的最佳设置,例如在Windows机器上 (因为有多种意见:Distributing git configuration with the codehttps://help.github.com/articles/dealing-with-line-endings

奖金问题:您是否可以在Windows(使用标准工具)上确定回购是否在所有提交中都有混合行结尾(错误的core.autocrlf设置)?

4 个答案:

答案 0 :(得分:15)

要检查存储库中实际提交的行结尾(无论您的core.autocrlf设置如何),请尝试以下操作:

git grep -I --files-with-matches --perl-regexp '\r' HEAD

-I表示不应该查看二进制文件。)

答案 1 :(得分:3)

我仍然会将此设置(core.autocrlf)保持为false,正如我在您提及的“ Distributing git configuration with the code”中所述,并使用eol gitattributes directive更精细 - 粒度控制。

话虽如此,检测混合线结尾:

  • core.autocrlf设为true
  • git clone您的回购
  • git diff:如果你的克隆刚刚看到差异......一些自动的eol转换只发生在工作树中。

2016年更新(4年后):a more modern way to detect eol changes

 git -c color.diff.whitespace="red reverse" diff -R -- afile

答案 2 :(得分:2)

最佳线路结束练习在这里:https://stackoverflow.com/a/10855862

确定现有git存储库中的行结尾:

  1. core.autocrlf设置为false,以便在传输文件时不会更改文件结尾。
  2. git clone你的回购为前。在新目录中。
  3. 使用显示行结尾的文本编辑器打开文件(例如PHPStorm会这样做)。您应该打开几个文件,因为行尾可能因文件而异。
  4. 除了repo有.gitattributes文件外,你无法确定创建者使用的是什么core.autocrlf,因为它是本地配置。

    在Windows上,如果您不使用.gitattributes,请使用默认情况下设置的core.autocrlf true。

答案 3 :(得分:0)

在Windows中,只需从命令提示符处运行以下命令:

git config --list

这将列出所有git配置变量。

如果要获取单个配置设置(例如,对于core.autocrlf),请在Windows命令提示符下运行以下命令:

git config --get core.autocrlf

这将为您提供一个“ true”或“ false”值。

如果您要更改此设置,请编辑C:\ProgramData\Git\config文件,并将值从false更改为true

注意:这仅适用于Windows操作系统。