2011-06-23 180 views
1

不知何故,我意外地提交了一個.sln.docstates文件。現在我將它添加到gitignore中,但不會被忽略。我認爲這是因爲我已經犯了一次。不知道什麼時候!Git從存儲庫中刪除* .sln.docstates

有沒有可能使這個gitignore規則工作? 如何從存儲庫中刪除它?

* .sln.docstates

回答

1

這取決於您是否推送了存儲庫更改或者更改是本地的。

如果您已將更改推送到遠程存儲庫,那麼您不應該重寫歷史記錄。

如果您的更改僅爲本地,則使用git log .sln.docstates來查找文件的歷史記錄,並找到您添加文件的提交。從提交中刪除文件需要一些git filter-branch magic,see a corresponding answer

如果該文件僅存在於最近未發佈的提交中,情況會更簡單:您可以使用git rm --cached .sln.docstatesgit commit --amend。 (--cached開關告訴git不要觸摸您的文件並將其從索引中刪除,然後修改上次提交,而不是使用--amend開關創建新文件。)

3

刪除這樣說:

$ git rm --cached \*.sln.docstates 

...那麼的.gitignore應得到尊重。