我有一个git repo。有一些文件已经提交到它已经包含尾随空格。现在,如果我对任何此类文件进行了更改,然后尝试使用git checkout .
将其丢弃,git会撤消我的更改,但文件仍然保持修改状态。无论我重复git checkout .
多少次,国家都不会改变。
如果我此时执行git diff
,它会显示整个文件已更改,即文件的完整内容已被新内容替换。同时执行git diff --check
(正确)会显示最初存在于文件中的尾随空白错误。
我可以将此文件恢复到未修改状态的唯一方法是运行git rm . --cached && git reset --hard
,这非常尴尬。
我知道git对于空格错误非常敏感,但我不希望它出现上述行为。有人可以向我解释为什么会这样吗?这是一个功能还是一个bug?此外,如果这是正常行为,那么将文件恢复到未修改状态的最佳方法是什么。
我正在1.8.3.msysgit.0
上运行git版本Windows7 x64
。
答案 0 :(得分:2)
确保所有内容都不会因为行尾转换而发生变化。
做一个:
git config --global core.autocrlf false
(默认情况下,使用msysgot设置为true)
然后再次尝试git checkout .
。
OP Frederick The Fool确认in the comments:
最终结果是由于线路结束。我以为我使用方法recommended here on GitHub处理了行结束问题。
但事实证明问题并未在所有文件中修复 所以我要做的是:
- 随意修改我的仓库中的所有文件。
- 在回购的根目录下执行
git checkout .
。- 由于并非所有文件都会在步骤2中撤消,因此请对所有文件执行
醇>git commit -a
。这些步骤永久地解决了这个问题。