如何从标签中永久删除git中的文件?

时间:2012-04-20 15:25:43

标签: git

git filter-branch -f --index-filter 'git rm -r --cached --ignore-unmatch mysql_db' HEAD

这就是我要删除的mysql_db,这没关系。但现在我必须从我的所有标签中做到这一点。我怎么能这样做?

1 个答案:

答案 0 :(得分:7)

您还必须重写标记名称(然后它们将指向重写的提交):

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”来简单地更新标签。在这种情况下,请务必小心,并确保备份旧标签,以防转换发生冲突。