这个问题在这里已有答案:
这是我的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
我们知道,sdf2sdf
和2d34d4
是相同的提交,即使它们有不同的提交ID。但标签将留在2d34d4
,不会更新到sdf2sdf
。
当我使用git rebase时,有什么办法让标记跟随新提交?
标签更多的是标记时间固定的东西(例如发布)。但是,如果要使用标记,可以手动使用git tag -f tagName commitHash
进行更新。
这就是说,也许你会想要使用分支而不是标签。分支机构在“四处走动”方面更加灵活。说你有以下内容:
commit beba35 (yourBranch)
aaa
commit 2d34d4 (yourBranchTag)
bbb
commit be2f8a
cccc
(masterBranch)
而不是在yourBranch
之上重新定位masterBranch
,你可以在yourBranchTag
之上重新定位masterBranch
,然后在yourBranch
之上重新定位yourBranchTag
。
你最终必须按顺序维护它们,但它们都会保持在同一个祖先的位置。
拥有这个yourBranchTag
分支并不意味着你会保留它或合并它,也许只是在你的日志中保留一个“书签”。一旦你完成yourBranch
并准备好在masterBranch
合并,你可以放弃yourBranchTag
。
没有简单的方法可以告诉git“将该标签与rebase一起移动”。
你必须手工完成:
git tag -f ATag sdf2sdf