如何重新签出Git中的所有文件以从CRLF转换为LF?

时间:2018-05-15 15:44:54

标签: git

我已经使用CRLF签出了文件。我改变了git config --global core.autocrlf false。 Git没有看到任何修改。当我编辑文件时,Git认为整个文件发生了变化。如何使用LF而不是CRLF重新签出并覆盖所有文件,因此差异按预期工作?我看到this,但答案提到了一个无效的命令。我看到了this,但它说" Git想要提交你没有修改的文件"这不是真的。我试过了

git pull --force
git checkout --force

但是文件仍然有CRLF。那么如何将所有文件从CRLF转换为LF?我可以编辑每个& Notepad ++中的每个文件都使用Edit> EOL转换> Unix(LF),这是我在逐个文件的基础上做的,但它非常繁琐。可能还有一个awksed脚本,但我对它们并不熟悉,而且我更愿意只修改签入Git的内容,而不是弄乱{ {1}}。

也试过

.git/

文件仍然与CRLF!

这与建议的副本不重复,因为我不想提交任何内容。只想从Git获取一个新的副本。此外,Git没有看到任何文件被修改。

2 个答案:

答案 0 :(得分:2)

这似乎有效,但我不确定为什么。它看起来非常可怕,有很多变化,但它最终没有改变任何东西。第一行后我很担心。

git rm --cached -r .
git reset
git checkout .

不需要提交。

答案 1 :(得分:0)

git add --renormalize .,然后提交所有更改的文件对我来说都是成功的。

根据man git add,它特别提到要在core.autocrlf更改后运行它。

-重新规范化

将“干净”过程重新应用于所有跟踪的文件,以将其再次强制添加到索引中。在更改core.autocrlf配置或text属性后,此功能很有用,以便更正添加有错误CRLF / LF行尾的文件。此选项表示-u。