我需要将我的git repo分成两部分。我使用了此处显示的步骤:Detach (move) subdirectory into separate Git repository
我使用的命令是:
git filter-branch --subdirectory-filter ABC HEAD -- --all
似乎工作得很好,并留下了ABC作为根。
但是现在如果我尝试签出在拆分回购之前存在的标签:
git checkout an-old-tagname
它正在重新创建旧的目录结构 - 所以重新创建ABC作为子目录,以及XYZ1和XYZ2。
我知道repo在那个时间点的确是如何看待的 - 但是我希望标签只引用ABC位,好像它们当时已经在根部。我认为这就是filter-branch在重写历史时所做的事情,但显然我并没有正确地理解它。
我怎样才能重新编写标签,这样我可以回到过去,同时仍然将ABC作为回购的根源?
答案 0 :(得分:18)
您需要指定
--tag-name-filter cat
也可以重写标签
现在,你可以做到
git filter-branch --tag-name-filter cat
...其他过滤器选项...-- --tags
其中 ...其他过滤器选项... 重复您先前应用的过滤器。