【发布时间】:2018-05-15 15:44:54
【问题描述】:
我已使用 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 Conversions > Unix (LF),这是我在逐个文件的基础上一直在做的事情,但这非常乏味。可能还有一个awk 或sed 脚本,但我不熟悉它们,我宁愿只修改签入Git 的内容,而不是搞砸.git/。
也试过了
git reset --hard origin/master
并且文件仍然带有 CRLF!
这不是建议副本的副本,因为我不想提交任何内容。只想从 Git 获取新副本。此外,Git 没有看到任何文件被修改。
【问题讨论】:
-
不知道为什么你认为这是重复的。我提到“Git 没有看到任何修改”。我提交没有问题。并且没有必要提交任何东西,因为没有任何改变。仅寻求获取原始 LF 行结尾。
-
那里的答案解释了如何使
git reset --hard工作:首先使用rm .git/index删除索引或使用git rm -r --cached .清除它 -
您最好通过使用“.giattributes”文件来指定文件行尾配置来解决您的问题(这是当今解决您问题的好习惯),它将解决您的问题你所有的文件。
-
我的文件真的没有问题。它设置为
true,Git 忠实地将 LF 转换为 CRLF。但我想将其设置为false,然后只获取文件的新副本而不进行任何转换,因为我的编辑器可以处理 LF。如果有人签入 CRLF 文件,我不一定要将其转换为 LF - 我只想查看 Git 中文件的原始二进制版本。 CRLF 也很好,如果在 Git 中就是这样的话。
标签: git