2

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

这就是我正在做的删除mysql_db,这很好。但现在我必须从我所有的标签中做到这一点。我怎样才能做到这一点?

4

1 回答 1

7

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

git filter-branch -f \
  --index-filter 'git rm -r --cached --ignore-unmatch mysql_db' \
  --tag-name-filter 'cat' -- --all

用于--all重写所有提交,而不仅仅是那些可从当前提交访问的HEAD提交。

git filter-branch 的联机帮助页

--tag-name-filter

[…]

原有标签不会被删除,但可以被覆盖;使用“--tag-name-filter cat”来简单地更新标签。在这种情况下,请务必小心并确保备份旧标签,以防转换发生冲突。

于 2012-04-20T15:31:31.637 回答