【问题标题】:Integrating a branch in the middle of another branch将一个分支集成到另一个分支的中间
【发布时间】:2015-08-26 10:49:00
【问题描述】:

有一个项目只使用主分支和标记来管理版本。

我必须为特定版本制作一个修补程序并将其集成到主分支中。

问题:主分支已经包含我不想包含在修补程序中的其他提交。

Current state: (TAG: v3.2.0) | ... ---C1---C2---C3---C4---C5---C6 (master) \ \---C7---C8 (fix_bug_branch) | (TAG: v3.2.1)

Desired state: (TAG: v3.2.0) | ... ---C1---C2---C3---C7---C8---C4---C5---C6 (master) | (TAG: v3.2.1)

是否可以重新设置或合并这样的场景?怎么样?

【问题讨论】:

  • 历史必须是线性的吗?如果没有,您可以继续并将 fix_bug_branch 合并到 master 中。尽管最初被标记在不同的分支上,但合并将使每个标记再次成为 master 的祖先。

标签: git git-branch git-merge git-rebase


【解决方案1】:

如果你还没有发布你的标签,你可以 rebase fix_bug_branch 来重新排序提交然后git tag -f v3.2.1 <newsha1> 来重写你的标签。

否则,您可以通过 rebase 将您的第一个模式转换为第二个模式,但您将拥有一个 C8'

【讨论】:

  • 如何变基以在 C4'---C5'---C6' 之前离开 C7'、C8'? (重写提交不是问题)
  • 不确定这个问题,但也许答案是 git rebase -i 并重新排序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2011-11-07
  • 2011-07-15
  • 2015-08-08
  • 1970-01-01
相关资源
最近更新 更多