2013-06-26 22 views
0

所以我有一個git存儲庫。我使用的是在Cygwin/Windows 8下運行的git 1.7.9。使用git clean後,我刪除了作爲更改檢測到的文件?

這個git存儲庫有這個奇怪的行爲,所以它認爲某個目錄的一些子目錄被跟蹤,但是包含它們的實際目錄不是。

所以,我得到的怪事是這樣的:

$ git reset --hard 
$ git status 
#untracked files 
foo 
$ git clean -fd 
removing foo 
$ git status 
#changes not staged 
D foo/bar/whatever.txt 

不過,走另一條路,並添加文件:

$ git add foo 
$ git status 
# changes not staged 
A foo/bar/whatever.txt 

如果我從那裏提交,那麼它當然會當試圖推動時發生瘋狂的衝突。

偶爾會有一個git reset --hard修復它,但有時不會。我發現擺脫它的最好方法是簽出一個新的分支,刪除我的工作副本中的所有內容並運行git reset --hard

有沒有人曾經歷過這種奇怪的行爲?我使用的是git-tfs,這可能意味着這是一個bug,但它大部分是一個常規的git倉庫,所以我認爲這不重要。

+2

你的'.gitignore'(和'foo/.gitignore'和'foo/bar/.gitignore',如果它們存在的話)是什麼?另外,'git ls-tree -r HEAD-foo'告訴你正在跟蹤的'foo'中的文件是什麼?是「foo」還是「bar」符號鏈接而不是目錄? – twalberg

+0

也許(但不太可能).gitattributes問題結束? 這不是一個git-tfs問題,因爲git-tfs不會觸及你的工作區文件夾(特別是當你不叫它;)) – Philippe

+0

btw你試過升級到git 1.8嗎? –

回答

0

git clean -fd跳過與您的.gitignore中的任何條目相匹配的文件,我假設這種情況。所以請確保在您的任何.gitignore s中沒有匹配foo/bar/whatever.txt的正則表達式。

關於更多的事情請確保foo/bar/whatever.txt未被鎖定,這可能會阻止清潔。

相關問題