git rebase 并保持标签更新

bit*_*xyz 12 git git-rebase

这是我的 git 日志

commit beba35
aaa

commit 2d34d4
bbb(tag: ATag)

commit be2f8a
cccc
Run Code Online (Sandbox Code Playgroud)

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

commit as2sd2e
aaa

commit sdf2sdf
bbb

commit be2f8a
cccc
Run Code Online (Sandbox Code Playgroud)

我们知道,即使它们具有不同的提交 ID,它们也是相同的提交sdf2sdf2d34d4但该标签将保持打开状态2d34d4并且不会更新为sdf2sdf.

当我使用 git rebase 时,有什么方法可以让标签遵循新的提交吗?

pad*_*win 8

标签更多的是标记及时修复的内容(例如版本)。但是,如果您想使用标签,则可以git tag -f tagName commitHash手动更新它。

话虽这么说,也许您想使用分支而不是标签。分支机构在“移动”方面更加灵活。假设您有以下内容:

commit beba35 (yourBranch)
aaa

commit 2d34d4 (yourBranchTag)
bbb

commit be2f8a
cccc

(masterBranch)
Run Code Online (Sandbox Code Playgroud)

您可以yourBranch在... 之上重新建立基础,然后在... 之上重新建立基础,而不是在... 之上重新建立基础。masterBranchyourBranchTagmasterBranchyourBranchyourBranchTag

你最终必须保持它们的顺序,但它们都会留在同一个祖先队列中。

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


LeG*_*GEC 5

没有直接的方法告诉 git“将标签与变基一起移动”。

你必须手动完成:

  • 发现新的目标提交
  • (就像@padawin建议的那样)将标签移动到此提交git tag -f ATag sdf2sdf