我注意到有很多文件不在我的回购中。其中一个文件是:
> 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',这样可以正常工作吗?答案 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