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

U. *_*wen 24 git core.autocrlf

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

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

我仍然不确定core.autocrlf的最佳设置,例如在Windows机器上(因为有多种意见: 使用代码分发git配置https://help.github.com/articles/dealing-with-line-结局)

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

rob*_*nst 19

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

git grep -I --files-with-matches --perl-regexp '\r' HEAD
Run Code Online (Sandbox Code Playgroud)

(-I意味着不应该查看二进制文件.)

  • @armyofda12mnkeys 该命令(带有“HEAD”)专门检查(远程)存储库中的文件,而不是签出的文件。对于特定文件,您也可以运行它,您将获得原始内容(例如“README.md”):“git cat-file -p HEAD:README.md”。用例如“|”来查看它 less -u` 如果有 `^M`,则意味着文件中有 `\r`。 (3认同)
  • 试试这个:`git grep -I --files-with-matches $'\ r'HEAD` (2认同)

Von*_*onC 5

正如我在“使用您提到的代码分发 git 配置”中所解释的那样,我仍然会将该设置 ( core.autocrlf)保留false为,并使用gitattributes 指令进行更细粒度的控制。eol

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

  • 设置core.autocrlftrue
  • git clone 你的回购
  • git diff:如果差异在您的克隆之后可见……一些自动 eol 转换刚刚在工作树中发生。

2016 年更新(4 年后):一种更现代的检测 eol 变化的方法

 git -c color.diff.whitespace="red reverse" diff -R -- afile
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

8853 次

最近记录:

6 年,6 月 前