不知何故,我意外地提交了一个.sln.docstates文件。现在我将它添加到gitignore,但它不会被忽略。我想这是因为我已经承诺了一次。不知道什么时候!
是否有可能使这个gitignore规则有效? 如何从我的存储库中删除它?
*。sln.docstates
答案 0 :(得分:3)
以这种方式删除它:
$ git rm --cached \*.sln.docstates
...然后.gitignore应该受到尊重。
答案 1 :(得分:1)
这取决于您是否已推送存储库更改或更改是本地更改。
如果您已将更改推送到远程存储库,那么您不应该重写历史记录。
如果您的更改只是本地更改,则使用git log .sln.docstates
查找文件的历史记录,并找到添加文件的提交。从提交中删除文件需要一些git filter-branch
magic,see a corresponding answer。
如果文件仅出现在最近未发布的提交中,则情况会更简单:您可以使用git rm --cached .sln.docstates
和git commit --amend
。 (--cached
开关告诉git不要触摸你的文件并将其从索引中删除,然后你修改你的上次提交,而不是使用--amend
开关创建一个新文件。)