2013-07-18 31 views
2

使用git版本1.8.1.msysgit.1一個文件是以某種方式奇怪地跟蹤。可能是什麼原因?非常奇怪的跟蹤文件使用git

我有一個名爲missingFile在git中的文件。

$ 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 

我該如何獲得文件的標準行爲(識別刪除的文件,提交刪除,添加文件)?

+7

請不要編輯解決方案爲您的問題或加上「[解決]「的標題。相反,將它作爲答案發布並(可選)接受它。 (是的,發佈自己的問題的答案是完全可以接受的。) –

+0

@KeithThompson謝謝你的提示。 – codingdave

回答

1

解決方案

文件有跳worktree財產。這在

$ 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")