我的问题可能来自对Git某些方面的误解。当我要处理由于Windows机器上的更改而在Mac上将CRLF更改为LF行结尾时,我想到了这个问题。
1)我首先在OSX上初始化一个新的存储库,然后将受CRLF行尾影响的所有文件放入其中。
2)第一次提交,因为设置了core.autocrlf = input,所以git自动将行尾更改为LF
我的本地工作树中的文件仍然具有CRLF行尾,但此处(How to normalize working tree line endings in Git?)也提供了解决方案:
删除索引中的文件,并根据上一次提交恢复索引+工作树:
git rm --cached -r .
git reset --hard
现在发生了混乱:我的第一次提交1)包含转换后的LF行结尾,而我的本地树和索引却没有。因此,我的期望是git应该显示出工作树/索引和存储库之间的差异。但是
git diff HEAD
git diff --chached
没有列出任何更改吗?
答案 0 :(得分:1)
只要不进行重置(和删除索引),工作树仍具有CRLF行结尾。
不启用core.autocrlf = input
:结帐部分(填充工作树)会将eol更改为系统eol。
参见此conversion table。
提醒:切勿使用core.autocrlf
:这是一种本地配置,适用于太多(即*全部)文件。
使用gitattributes core.eol
directive:这是克隆的存储库中的设置部分,这意味着您不必在本地进行任何设置。
提醒:请勿rm /添加。使用Git 2.16 (Q1 2018) and more,您可以:
git add --renormalize .