我可以将分支合并到旧提交中并保留标记吗?

时间:2011-08-24 10:56:15

标签: git

我的用例是:

  1. 已标记为主v1.0
  2. 在主人
  3. 中做了一些更改
  4. live bug意味着我需要修补v1.0
  5. 我从v1.0提交创建一个分支进行更改并提交
  6. 然后标记分支v1.0.1
  7. 然后我想将分支合并回master。如果我这样做,v1.0.1标签最终会在第2点的主服务器更改之后(正如您所期望的那样)。

    我猜测答案是否定的,但无论如何都要将分支合并到提交中,以便我的1.0.1标记在v1.0之后和master中的其他更改之前附加到提交。实际上,我认为应该及时改变我的改变。

    或者问题确实是我的工作流程,我应该在分支机构中对2进行更改,并且只在它们生效时将它们合并为主。

1 个答案:

答案 0 :(得分:1)

标记是不可变的,因此您的问题更多地是关于提交的顺序。

您可以做的是在分支v1.0.1之上重新定义master

git checkout master
git rebase v1.0.1

这样,master中的两个新变化会在V1.0.1之上重播 如果您还没有发布master,则可以使用rebase将修补程序集成到当前分支中。

有关详情,请参阅“git rebase vs git merge”。


正如Graham在评论中指出的那样,如果master上的更改已被推送,那么对其进行重新定位可能会给已经提取master的同事带来麻烦。 请参阅“Rebasing and what does one mean by rebasing pushed commits”。

在这种情况下,它是:

  • 在“next”分支上进行更改
  • V1.0.1中合并master(然后随时反映生产中正在运行的内容)
  • 在准备好时next合并master

(但如果next需要补丁,那么是的,您将被迫在更改之后应用它,因为所述更改已经发布,即推送到远程仓库)