如何从标签中永久删除git中的文件?
git filter-branch -f --index-filter 'git rm -r --cached --ignore-unmatch mysql_db' HEAD
如何从标签中永久删除git中的文件?
这就是我正在做的,以删除mysql_db
,这很好。但现在我必须从我所有的标签中完成。我怎样才能做到这一点?
您必须重写标签的名称,以及(那么他们将指向改写提交):
git filter-branch -f \
--index-filter 'git rm -r --cached --ignore-unmatch mysql_db' \
--tag-name-filter 'cat' -- --all
使用--all
重写所有提交,而不仅仅是到达从目前HEAD
提交。
从manpage of git filter-branch:
--tag-name-filter
[...]
原来的标签不会被删除,但可以覆盖;使用“--tag-name-filter cat”来简单地更新标签。在这种情况下,要非常小心,并确保在转换发生冲突的情况下备份旧标签。
我认为OP想要使用HEAD以外的东西。在你的命令中用“ - --all”替换HEAD应该可以做到。 – ralphtheninja 2012-04-20 15:37:12
这取决于他是否要重写从HEAD或所有提交可到达的所有提交,但是,我同意。我会更新我的问题,以防万一。 – knittl 2012-04-20 15:39:10
可能重复[为什么git-filter-branch没有重写标签?](http://*.com/questions/7672907/why-has-git-filter-branch-not-rewritten-tags) – 2012-04-20 15:32:00