2

使用 git 版本 1.8.1.msysgit.1 奇怪地跟踪了一个文件。可能是什么原因?

我在 git 中有一个名为missingFile的文件。

$ ls
missingFile

$ git add missingFile

$ git status
# On branch test
nothing to commit, working directory clean

$ git commit missingFile
# On branch test
nothing to commit, working directory clean

现在我删除了这个文件。Git 不会错过它。这让我很奇怪。

$ rm missingFile

$ ls

$ git status
# On branch test
nothing to commit, working directory clean

$ git commit
# On branch test
nothing to commit, working directory clean

但是,当签出文件时,它会神奇地再次出现。

$ git checkout missingFile

$ ls
missingFile

差异也揭示了文件。

$ git diff origin/master
diff --git a/missingFile b/missingFile
new file mode 100644
index 0000000..0633ff0
--- /dev/null
+++ b/missingFile
@@ -0,0 +1,1 @@
+missingFile_content

如何再次获得该文件的标准行为(识别已删除文件、提交删除、添加文件)?

4

1 回答 1

1

解决方案

该文件具有skip-worktree属性。这是由领先的S透露的

$ git ls-files -v
S missingFile

一个简单的调用就git update-index --no-skip-worktree产生了预期的效果:

git update-index --no-skip-worktree missingFile
$ git status
# On branch test
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   missingFile
#
no changes added to commit (use "git add" and/or "git commit -a")
于 2013-07-19T10:07:56.780 回答