使用.gitattributes强制一致的行尾时的Git-Weirdness

时间:2018-10-04 02:04:51

标签: git line-endings git-extensions

因此,我最近在一个存储库中添加了一个.gitattributes文件,以尝试强制一致的行尾:

  # All Perl Sources should use Unix style line endings
  *.pl text eol=lf
  *.pm text eol=lf

但是我自己和许多其他开发人员都遇到了许多“幻像更改”,即使没有任何更改,git似乎仍将文件检测为“已更改”。每行显示为已添加,然后删除。

我怀疑它对行的结尾感到困惑(因此检测到每行是否已更改),但是这里很奇怪:

  • 我无法重置文件(重置已完成,但文件仍是未分段的更改)
  • 更改受影响的文本文件中的行尾不会影响它是否显示为更改后的文件。

以前有人遇到过这种情况吗,有没有办法避免或解决此问题?

1 个答案:

答案 0 :(得分:2)

With Git 2.16或更多,请至少执行一次:

git add --renormalize .
git commit -m "normalize eol files"
git push

然后尝试将存储库克隆到其他位置,并检查git status的行为是否符合预期。

确保您没有将core.autocrlf设置为true

git config core.autocrlf

您可以test for your files eol style