Git:尾随空格会导致文件保持修改状态

时间:2014-04-07 11:40:14

标签: git windows-7

我有一个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

1 个答案:

答案 0 :(得分:2)

确保所有内容都不会因为行尾转换而发生变化。

做一个:

git config --global core.autocrlf false

(默认情况下,使用msysgot设置为true)

然后再次尝试git checkout .


OP Frederick The Fool确认in the comments

  

最终结果是由于线路结束。我以为我使用方法recommended here on GitHub处理了行结束问题。

     

但事实证明问题并未在所有文件中修复   所以我要做的是:

     
      
  1. 随意修改我的仓库中的所有文件。
  2.   
  3. 在回购的根目录下执行git checkout .
  4.   
  5. 由于并非所有文件都会在步骤2中撤消,因此请对所有文件执行git commit -a
  6.         

    这些步骤永久地解决了这个问题。