不知何故,我意外地提交了一個.sln.docstates文件。現在我將它添加到gitignore中,但不會被忽略。我認爲這是因爲我已經犯了一次。不知道什麼時候!Git從存儲庫中刪除* .sln.docstates
有沒有可能使這個gitignore規則工作? 如何從存儲庫中刪除它?
* .sln.docstates
不知何故,我意外地提交了一個.sln.docstates文件。現在我將它添加到gitignore中,但不會被忽略。我認爲這是因爲我已經犯了一次。不知道什麼時候!Git從存儲庫中刪除* .sln.docstates
有沒有可能使這個gitignore規則工作? 如何從存儲庫中刪除它?
* .sln.docstates
這取決於您是否推送了存儲庫更改或者更改是本地的。
如果您已將更改推送到遠程存儲庫,那麼您不應該重寫歷史記錄。
如果您的更改僅爲本地,則使用git log .sln.docstates
來查找文件的歷史記錄,並找到您添加文件的提交。從提交中刪除文件需要一些git filter-branch
magic,see a corresponding answer。
如果該文件僅存在於最近未發佈的提交中,情況會更簡單:您可以使用git rm --cached .sln.docstates
和git commit --amend
。 (--cached
開關告訴git不要觸摸您的文件並將其從索引中刪除,然後修改上次提交,而不是使用--amend
開關創建新文件。)
刪除這樣說:
$ git rm --cached \*.sln.docstates
...那麼的.gitignore應得到尊重。