Git 拉动 Windows(git smc 客户端)不遵守 .git 属性的 eol=lf
Git pull on Windows (git smc client) doesn't respect .gitattributes's eol=lf
我正在做一个最初在 Unix 环境下开发的项目。
这样的项目有一个 .git 属性文件,强制 eol=lf 超过标准的 crlf-lf 转换
*.sh text eol=lf
这是我的理解 git "keep the original LF line endings".
当我克隆这个存储库时,在拉取完成的那一刻,如果我这样做 git status
,一些文件被标记为已经更改(特别是 .sh 文件)
git diff
显示
-FileContent
+FileContent
其中 FileContent 是文件中的所有文本。
我试过:
- git 重置 --hard
- git update-index --assume-unchanged
- git 配置 --global core.autocrlf false
- git 配置 --global core.eol lf
dos2unix
单个文件
- 使用我的编辑器 (Phpstorm) 将特定文件的行尾更改为 \n
None对问题有影响。
我也试过:
- git rm --cached -rf 。 -> 这删除了项目中的很多文件
- 重新获取特定分支(`git 获取;git 检出 HEAD 路径/)
- git 添加 --renormalize 。 -> 所有 .sh 文件都显示为已修改(按照上述配置从分支重新获取文件后只有 1 个)
- git diff --ignore-all-space 什么都不显示
od path/file.sh
显示文件的二进制版本(之前设置上面的配置其实是文本)
如何让 git 尊重 .sh
文件的 eol=of
值?
编辑:通过rm .git/index
删除索引并执行git reset --hard HEAD
后,问题消失了
另外(供参考):没试过
- core.autocrlf 为假
关于 eol 转换:
- 确保 core.autocrlf 设置为 false(这样,只有
[.gitattributes
指令]1 会起作用)
- 使用
text eol=lf
- 后跟
git add --renormalize .
以强制应用 .gitattributes 指令。 (since Git 2.16,2018 年第一季度)
after removing the index via rm .git/index
and performing git reset --hard HEAD
, the problem was gone
这就是 git add --renormalize .
应该效仿的。
我正在做一个最初在 Unix 环境下开发的项目。
这样的项目有一个 .git 属性文件,强制 eol=lf 超过标准的 crlf-lf 转换
*.sh text eol=lf
这是我的理解 git "keep the original LF line endings".
当我克隆这个存储库时,在拉取完成的那一刻,如果我这样做 git status
,一些文件被标记为已经更改(特别是 .sh 文件)
git diff
显示
-FileContent
+FileContent
其中 FileContent 是文件中的所有文本。
我试过:
- git 重置 --hard
- git update-index --assume-unchanged
- git 配置 --global core.autocrlf false
- git 配置 --global core.eol lf
dos2unix
单个文件- 使用我的编辑器 (Phpstorm) 将特定文件的行尾更改为 \n
None对问题有影响。
我也试过:
- git rm --cached -rf 。 -> 这删除了项目中的很多文件
- 重新获取特定分支(`git 获取;git 检出 HEAD 路径/)
- git 添加 --renormalize 。 -> 所有 .sh 文件都显示为已修改(按照上述配置从分支重新获取文件后只有 1 个)
- git diff --ignore-all-space 什么都不显示
od path/file.sh
显示文件的二进制版本(之前设置上面的配置其实是文本)
如何让 git 尊重 .sh
文件的 eol=of
值?
编辑:通过rm .git/index
删除索引并执行git reset --hard HEAD
后,问题消失了
另外(供参考):没试过 - core.autocrlf 为假
关于 eol 转换:
- 确保 core.autocrlf 设置为 false(这样,只有
[.gitattributes
指令]1 会起作用) - 使用
text eol=lf
- 后跟
git add --renormalize .
以强制应用 .gitattributes 指令。 (since Git 2.16,2018 年第一季度)
after removing the index via
rm .git/index
and performinggit reset --hard HEAD
, the problem was gone
这就是 git add --renormalize .
应该效仿的。