git rebase并保持标签更新

时间:2019-04-02 06:39:10

标签: git git-rebase

这是我的git日志

commit beba35
aaa

commit 2d34d4
bbb(tag: ATag)

commit be2f8a
cccc

如果我使用git rebase并更改be2f8a,那么我将获得一个新的git日志

commit as2sd2e
aaa

commit sdf2sdf
bbb

commit be2f8a
cccc

我们知道sdf2sdf2d34d4是相同的提交,即使它们具有不同的提交ID。但是标记将保留在2d34d4上,并且不会更新为sdf2sdf

当我使用git rebase时,有什么方法可以使标记保持新提交吗?

2 个答案:

答案 0 :(得分:2)

标签更多地用于标记时间上固定的内容(例如发行版)。但是,如果要使用标签,则可以手动使用git tag -f tagName commitHash对其进行更新。

这就是说,也许您想使用分支而不是标签。分支在“移动”方面更为灵活。假设您具有以下条件:

commit beba35 (yourBranch)
aaa

commit 2d34d4 (yourBranchTag)
bbb

commit be2f8a
cccc

(masterBranch)

您可以在yourBranch之上重新设置masterBranch,而不是在yourBranchTag之上重新设置masterBranch,然后在{{1 }}。

您最终不得不按顺序维护它们,但是它们都将保留在同一祖先行中。

拥有这个yourBranch分支并不意味着您将保留或合并它,也许仅仅是在日志中保留一个“书签”。一旦完成yourBranchTag的使用并准备将其合并到yourBranchTag中,就可以抛弃yourBranch

答案 1 :(得分:0)

没有直接的方法告诉git“将标记与重新定位一起移动”。

您必须手工完成:

  • 发现新的目标提交
  • (如建议@padawin一样)将标签移至此提交git tag -f ATag sdf2sdf