2017-06-20 169 views
0

給定一個文件foo/example.txt,當它移動到一個新創建的父目錄,即foo/bar/example.txt,通過移動目錄git似乎沒有檢測到新文件。git沒有檢測到目錄移動到另一個目錄

mkdir foo/bar 
mv foo foo/bar 

尤其git status顯示foo/example.txt被刪除,但不是說foo/bar/example.txt是創造。 git status --ignored將顯示foo/bar作爲忽略的目錄,儘管它的不是.gitignore。事實上,即使重命名目錄也不會改變其被忽略的狀態。

This does not when using git mv。我不明白爲什麼。

這是在Darwin C02RW05YFVH6 15.6.0上的git版本2.13.0

回答

2

它會檢測它當你git rm舊的目錄和git add新的。

+0

爲什麼?是否有一個設置讓Git始終檢測到這些更改而無需額外的步驟? –

+0

問題是你「移動」了git後面的目錄。如果在移動目錄之後(不使用git)你已經檢查過狀態,git會告訴你類似「這個目錄不存在......並且還有其他目錄,我不知道任何關於它的信息」。這應該足以讓你意識到git注意到有些東西是可疑的。如果此時你已經「添加」目錄git會認爲這些文件是「新的」,因爲你沒有通知git關於刪除。如果添加後刪除了舊目錄,那麼git會說「aha!」.... 2bcont – eftshift0

+0

...然後它會告訴你,這些文件已被移動..... _or_而不是使用「mv; git add; git rm「,你可以讓git爲你做這個動作,並且你可以在同一個鏡頭中得到相同的結果:'git mv originaldir bar/newdir''' – eftshift0

相關問題