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倉庫,所以我認爲這不重要。
你的'.gitignore'(和'foo/.gitignore'和'foo/bar/.gitignore',如果它們存在的話)是什麼?另外,'git ls-tree -r HEAD-foo'告訴你正在跟蹤的'foo'中的文件是什麼?是「foo」還是「bar」符號鏈接而不是目錄? – twalberg
也許(但不太可能).gitattributes問題結束? 這不是一個git-tfs問題,因爲git-tfs不會觸及你的工作區文件夾(特別是當你不叫它;)) – Philippe
btw你試過升級到git 1.8嗎? –