Git rebase并保持标签更新

12

这是我的 git 日志

commit beba35
aaa

commit 2d34d4
bbb(tag: ATag)

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

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

commit as2sd2e
aaa

commit sdf2sdf
bbb

commit be2f8a
cccc
我们知道,即使它们具有不同的提交ID,sdf2sdf2d34d4是相同的提交。但标签将保留在2d34d4上,并且不会更新到sdf2sdf
在使用git rebase时,是否有任何方法可以使标签跟随新提交?

请注意,由于同样的原因,移动任何标签通常都不是一个好主意,将标签移动到rebase之后可能也不是一个好主意。特别地,某些其他Git用户可能已经将标签复制到他们自己的Git中,在此之后,他们可能会保留标签的“错误”值。 - torek
2个回答

8

标签主要用于标记特定时间点的内容(例如发布版)。但如果您想使用标签,可以手动使用git tag -f 标签名 提交哈希值来更新标签。

话虽如此,也许您更想使用分支而非标签。就移动性而言,分支更加灵活。假设您有以下内容:

commit beba35 (yourBranch)
aaa

commit 2d34d4 (yourBranchTag)
bbb

commit be2f8a
cccc

(masterBranch)

不要将yourBranch放在masterBranch之上,而是应该先将yourBranchTag放在masterBranch之上,然后再将yourBranch放在yourBranchTag之上进行变基。

这样你会发现需要按顺序维护它们,但它们仍然保持在同一个祖先线上。

yourBranchTag分支的存在并不意味着您要保留它或合并它,也许只是为了在记录中保留一个“书签”。一旦您完成了yourBranch并准备将其合并到masterBranch中,那么您就可以放弃yourBranchTag


5

没有直接的方法告诉git在rebase时“将该标签一起移动”。

您需要手动进行:

  • 找到新的目标提交
  • (如@padawin建议的) 将标签移到此提交 git tag -f ATag sdf2sdf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接