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

Chl*_*loe 5 git

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

git pull --force
git checkout --force
Run Code Online (Sandbox Code Playgroud)

但是这些文件仍然有 CRLF。那么如何将所有文件从 CRLF 转换为 LF?我可以在 Notepad++ 中编辑每个文件,并使用 Edit > EOL Conversions > Unix (LF),这是我在逐个文件的基础上所做的,但它非常乏味。可能还有一个awkorsed脚本,但我不熟悉它们,我更愿意只修改签入 Git 的内容,而不是搞砸.git/.


也试过

git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

而且文件还在CRLF 中!


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

Chl*_*loe 9

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

git rm --cached -r .
git reset
git checkout .
Run Code Online (Sandbox Code Playgroud)

无需提交。

  • 这仅在我使用“git reset --hard”时才对我有用。最后我不需要“结账”。 (2认同)