2012-08-03 49 views
3

我一直運行到那裏有人在我們的團隊推動的初始承諾,而第一添加.gitignore到他們的項目的情況。這導致了一堆在我們不希望跟蹤的回購結束了文件。刪除跟蹤的ignorned從回購的文件,但沒有在本地

git ls-files -i --exclude-from=.gitignore
給我由的.gitignore

git rm --cached <file>
忽略讓我刪除文件,一個從回購時間的文件列表,但仍會保留在我的工作目錄(我想要)

有沒有一種方法,我可以管從文件列表從ls-filesrm --cached(或其他一些方法可以讓我去rem奧雅納從我的回購被跟蹤,被忽略的文件)?

我們的團隊成員之一編寫了一個使用正則表達式來執行此操作的shell腳本,但我正在尋找僅用於命令行解決方案(如果存在)。

回答

4

你可以試試:

git rm --cached $(git ls-files -i --exclude-from=.gitignore) 

(比之後已刪除的文件有什麼作品在 「git remove files which have been deleted」,或 「git: how to add/commit removals made via vanilla rm?」,或 「Removing multiple files from a Git repo that have already been deleted from disk」 同樣的想法)。

或者:一個簡單的管道可以工作了:

git ls-files -i --exclude-from=.gitignore | xargs -0 git rm --cached 
+0

第一行對我的作品。管道解決方案給了我一個致命錯誤:'致命:pathspec「路徑/要/文件1路/到/文件2」不匹配任何files' – Jazzerus 2012-08-10 15:58:14

+0

第二個命令可能失敗,因爲你的第一個命令成功;這些文件將不再在倉庫中,所以正在於試圖不再有刪除文件引發的錯誤。 – Jason 2012-08-28 10:05:36

相關問題