我设法使我的索引处于某些文件未按预期跟踪的状态。
例如,我在工作目录中有 size.h 和 test.h 未修改:
$ git-ls-files -st size.h test.h
H 100644 de2c741b07d86f92bdd660626848072cb2bf510f 0 size.h
H 100644 8bb24bc7483ffcfc0fc1a3761dc63e86a1b3e003 0 test.h
$ git status
# On branch master
nothing to commit (working directory clean)
然后我对两个文件进行一些随机更改:
$ fortune >> size.h
$ fortune >> test.h
由于某种原因 size.h 没有被修改(尽管文件显然是)。同时 test.h 按预期修改:
$ 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: test.h
#
no changes added to commit (use "git add" and/or "git commit -a")
删除索引并重置后一切恢复正常:
$ rm .git/index
$ git reset
Unstaged changes after reset:
M size.h
M test.h
$ 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: size.h
# modified: test.h
#
no changes added to commit (use "git add" and/or "git commit -a")
在奇怪出现之前,我一直在使用 CentOS 上的 git 1.6.6 和 Windows 上的 msysgit 1.6.5.1 在这个存储库上的 samba 上工作。我无法从新的克隆中复制它。
我的直觉是,这是 msysgit 中的一个错误,可能与 samba 结合使用。有任何想法吗?