2013-10-18 51 views
30

當我有.gitignore data/*並運行git clean -fd時,數據文件夾及其所有內容文件被刪除。如何在git clean -fd中保留所有被忽略的文件?

我想要的是刪除所有未經修復的git倉庫中的文件,同時排除所有被忽略的文件(即不要刪除gitignored文件)。我能做什麼?

+0

默認情況下'git clean' *不應該*刪除被忽略的文件。 (你必須指定'-x'選項來刪除被忽略的路徑。) – Amber

+5

如果你的'.gitignore'包含'data /'而不是'data/*',你會觀察到同樣的問題嗎? – VonC

+0

@Amber我曾經這麼認爲。但似乎git clean不會刪除被忽略的_files_,而會刪除被忽略的_folders_(及其內容)。 –

回答

37

Git通常不會清除被忽略的文件,除非您指定-x標誌,但奇怪的是,它會在按照您的設置進行配置時清除(folder/*)。

正如@VonC評論說的那樣,您應該將.gitignore更改爲忽略目錄(data/)而不是其中的內容(data/*)。

這是一個微妙的差異,但重要的是混帳。

+6

我同意我的評論;)+1 – VonC

+2

稍微令人討厭的是,如果你忽略'folder /'而不是'folder/*',那麼你不能像'!folder/foo'那樣產生異常。 目前在Github上的Visual Studio的標準gitignore這樣一個問題:https://github.com/github/gitignore/commit/9aa3e1c3a7a5d9a7ecbab67f63eb81e8b4a493b7#commitcomment-6092133 –

+0

哇,這很煩人...好像在Git中清潔的錯誤? – Erfan

相關問題