Windows(git smc 客户端)上的 Git pull 不尊重 .gitattributes 的 eol=lf



我正在做一个最初在Unix环境中开发的项目。

此类项目有一个 .gitattributes 文件,该文件强制 eol=lf 通过标准 crlf-lf 转换

*.sh text eol=lf

我的理解是告诉 git"保留原始的 LF 行结尾"。

当我克隆这个存储库时,在拉取完成的那一刻,如果我git status,有些文件被标记为已经更改(特别是.sh文件(

git diff演出

-FileContent
+FileContent

其中文件内容是文件中的所有文本。

我尝试:

  • git reset --hard
  • git update-index --asassumptione-unchanged
  • git config --global core.autocrlf false
  • git config --global core.eol lf
  • dos2unix单个文件
  • 使用我的编辑器将特定文件的行尾更改为 (Phpstorm(

没有一个对这个问题产生影响。

我也试过:

  • git rm --cached -rf . ->这删除了项目中的很多文件
  • 重新获取特定分支('git fetch; git checkout HEAD path/(
  • git add --renormalize . -> 所有.sh文件都显示为已修改(按照上述配置从分支重新获取文件后仅为 1
  • (
  • git diff --忽略所有空间不显示任何内容
  • od path/file.sh显示了文件的二进制版本(在设置上述配置之前实际上是文本(

如何使 git 尊重.sh文件的eol=of值?


编辑:通过rm .git/index删除索引并执行git reset --hard HEAD后,问题消失了

另外(供参考(:没有尝试 - core.autocrlf to false

关于 eol 转换:

  1. 确保 core.autocrlf 设置为 false(这样,只有[.gitattributes个指令]1 在起作用(
  2. 使用text eol=lf
  3. 后面是强制应用 .gitattributes 指令的git add --renormalize .。(自 Git 2.16 起,2018 年第 1 季度(

通过rm .git/index删除索引并执行git reset --hard HEAD后,问题消失了

这是git add --renormalize .应该效仿的。

相关内容

  • 没有找到相关文章

最新更新