使用git非常奇怪地跟踪文件

时间:2013-07-18 11:46:55

标签: git

使用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

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

1 个答案:

答案 0 :(得分: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")