【发布时间】:2011-09-21 14:38:10
【问题描述】:
不知何故,我不小心提交了一个 .sln.docstates 文件。现在我将它添加到 gitignore 中,但是它不会被忽略。我认为这是因为我已经提交过一次。不知道什么时候!
是否有可能使这个 gitignore 规则起作用? 如何从我的存储库中删除它?
*.sln.docstates
【问题讨论】:
标签: c# visual-studio visual-studio-2010 git github
不知何故,我不小心提交了一个 .sln.docstates 文件。现在我将它添加到 gitignore 中,但是它不会被忽略。我认为这是因为我已经提交过一次。不知道什么时候!
是否有可能使这个 gitignore 规则起作用? 如何从我的存储库中删除它?
*.sln.docstates
【问题讨论】:
标签: c# visual-studio visual-studio-2010 git github
这取决于您是推送了存储库更改还是本地更改。
如果您已经将更改推送到远程存储库,那么您不应该重写历史记录。
如果您的更改只是本地的,您可以使用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 应该受到尊重。
【讨论】: