更改分支的父级

3

我已经寻找解决方案一段时间了,因为我并不是git方面的专家,即使我接近了解决方案,也无法稍加修改就完成它。

我一直在尝试像这里建议的那样工作:http://nvie.com/posts/a-successful-git-branching-model/,但由于匆忙和其他原因,在创建热修复分支时,我从dev而不是master分支分支出来了。

简单来说,我们有以下历史记录:

A---B---C--------D---- < developer
\      / \      /
 R1--R2   H1---H2
       \         \
--------X---------Y--- < master

R1和R2是发行版本的提交记录,已经很好了。但是,H1和H2是热修复分支的提交记录,H1应该从X(主分支)而不是C(开发分支)创建。由于X和C提交记录之后的代码相同,是否可以让H1从X创建?

我希望它看起来像这样:

A---B---C--------D---- < developer
\      /        /
 R1--R2   H1---H2
       \  /      \
--------X---------Y--- < master

这并不改变代码,我只是希望保持一致性,并让分支从应该开始的地方开始。问题是 - dev和master分支后面还有几个提交。H1-H2分支基本上已经过了一个月,之后有超过一百个提交。

正如我所说,我是一个Git初学者,一直在尝试rebase等操作,但那样做会出现很多问题。

有什么解决方法吗?

1个回答

2

如果你不重写H1,那么就不能做到这一点,这也意味着需要重写H2,同时还需要重写D和Y。所以所有的提交都需要改变并重新发布。而重新发布已经发布的提交通常是一个坏主意。所以如果这不是一个太大的问题,你应该不要这样做,只需保持原样即可。

如果你仍然想这样做,可以按照以下步骤进行:

  • 基于X创建一个新的(临时)分支。
  • 挑选H1;得到的H1'现在是基于X的。
  • 挑选H2。
  • 将主分支重置为X(git reset --hard X)。
  • 将临时分支合并到主分支。
  • 删除临时分支。
  • 将开发者分支重置为C。
  • 将主分支合并到开发者分支。
  • 使用强制选项发布这两个分支。

哦,好吧,我想我只能坚持我所拥有的了。谢谢。 - Jeti

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