git add of unstaged文件成功,但文件没有暂存

时间:2016-12-13 02:18:35

标签: git

我注意到有很多文件不在我的回购中。其中一个文件是:

> ls -l emtProblemSet1Problem1.tex
  682  -rw-r--r--  1 pjoot  staff  3605  6 Oct 10:00 emtProblemSet1Problem1.tex

Git似乎认为该文件不在repo中(虽然我确信在此之前的某个时候我会'git add'ed):

> git rm -n emtProblemSet1Problem1.tex
fatal: pathspec 'emtProblemSet1Problem1.tex' did not match any files

我可以明确地添加它:

> git add emtProblemSet1Problem1.tex
> echo $?
0

但是然后提交并不认为它已被添加:

> git commit emtProblemSet1Problem1.tex
error: pathspec 'emtProblemSet1Problem1.tex' did not match any file(s) known to git.

commit -a的行为没有区别。

我已检查过相关文件不在.gitignore中。我在mac上运行,而不是cygwin,所以没有文件名问题。

我不确定还有什么可以解释这一点,并且在我尝试执行git add和am running it from the same directory时不会出现任何错误。我do have some submodules in my git repository,但这个目录不是其中之一。

编辑:通过将文件移动到新目录(../tmp/),将它们添加到该目录中,然后git将它们返回到我想要的位置,我能够解决这个问题。我能够'触摸foo; git add foo; git commit foo',这样可以正常工作吗?

1 个答案:

答案 0 :(得分:0)

这似乎是一个文件系统不区分大小写的问题。我认为Mac文件系统区分大小写,但似乎不再是这种情况。

$ rm -f t T
$ echo hi > t
$ cat T
hi

看来我已经'git'认为该文件存在的情况与'ls'中出现的情况不同,对该替代案例的修改显示为未分阶段。

我已经能够通过运行以下命令删除该文件的两个版本:

git mv emtproblemSet1Problem1.tex Set1Problem1.tex

导致提交两个动作:

renamed:    emtproblemSet1Problem1.tex -> Set1Problem1.tex
deleted:    emtProblemSet1Problem1.tex