git没有检测到某些文件的变化

时间:2010-01-13 21:09:57

标签: git msysgit

我设法将索引置于未按预期跟踪某些文件的状态。

作为一个例子,我在工作目录中没有修改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上使用samba。我无法从一个新的克隆中重现这一点。

我的直觉是,这是msysgit中的一个错误,可能与samba结合使用。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我见过的唯一一个也显示错误的Git over samba状态的错误是GitX ticket 147。 这是一个相反的情况(git status显示修改了一个尚未修改的文件),但建议文件的某些元素(size?date?rights?)没有通过samba共享正确传输。

  

这让我想知道这是计算机上的时钟问题。将服务器上的时间设置为-1h无济于事   BTW,gitx和git-gui在同一台机器上通过sshfs完美地工作(但是,即使方便,sshfs也没有本地网络上的samba那么快)。

在通过samba共享克隆回购时,已知会发生{p> Locking issue

答案 1 :(得分:2)

我在1.7.9.msysgit.0版本中遇到了这个问题

问题在于我已将项目移动到新目录,并且至少有一个子模块具有工作树的绝对路径。

删除子模块目录后,删除了.git / modules中的条目,并重新初始化并更新了它们,问题就消失了。

这很奇怪,因为git在检查项目状态时绝对没有错误或警告消息(我可以看到),只有当我执行git子模块更新时 - 它会向我显示错误,它不能走到它想要的道路。