Git奇怪的行为

时间:2010-05-21 02:38:29

标签: git

git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   readme.txt
#       modified:   requirements.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

我没有对这些文件进行任何更改。但即使我尝试,我也收到了这条消息:

git checkout -- readme.txt
git checkout -- requirements.txt

当我跑步时:

git diff

它显示整个文件已更新。但内容是一样的。

我试图删除它们并再次结帐,但它没有用。

3 个答案:

答案 0 :(得分:2)

猜测:行结尾。这些文件可能与你的操作系统有不同的行结尾,git很方便(!)转换。您可以使用core.autocrlf选项来尝试修复此行为:github有一些有用的建议here

如果这是一个行结尾问题而且只是那些文件,那么将它们标准化为一致且与存储库的其余部分相同可能是值得的。这可能只是提交您现在显示的更改。

答案 1 :(得分:0)

这种事情发生在行结束更改(在终端上不容易看到;在二进制编辑器中查看)或奇怪的编写错误的程序,在所有内容的末尾留下空值。

答案 2 :(得分:0)

如果您可以避免任何eol转换,请尝试:

git config --global core.autocrlf false

(我的preferred configuration

,然后再次克隆您的回购以查看问题是否仍然存在(清除状态而不是“修改所有文件”)。
如果您的编辑支持其他eol风格且不进行任何转换,您将不会再受到打扰。