Git - 使用 .gitattributes 强制一致的行结尾时很奇怪

标签 git line-endings git-extensions

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

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

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

我怀疑它对行结尾感到困惑(因此检测到每一行都发生了变化),但这里的奇怪之处在于:

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

有没有人以前遇到过这个问题,有没有办法避免或解决这个问题?

最佳答案

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 .

关于Git - 使用 .gitattributes 强制一致的行结尾时很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52637974/

相关文章:

node.js - Azure linux上的Git推送 Node js失败,kudu想要运行dotnet命令

git - 将 Github wiki 迁移或导出到 Gitlab

ruby-on-rails - git post-receive hook 没有运行 bundle install

special-characters -\r 和\n 有什么区别?

Git Extensions 有不属于我自己的未决更改?

git - 无法在终端中显示 Git 树

svn - 如何避免 svn 存储库中的混合 eol 样式

coding-style - 根据 CodeSniffer,为什么我的行尾仍然是错误的?

windows - Git 扩展 - 无法推送到 Windows 网络驱动器中的 git 裸存储库

github-for-windows - 适用于 Windows 的 Git 扩展与 GitHub