Git 更改分支的父级

Git 更改分支的父级,git,git-branch,branching-and-merging,Git,Git Branch,Branching And Merging,我已经寻找了一段时间的解决方案,因为我还不是git方面的专家——即使我接近这个解决方案,我也无法稍微修改它来完成它 我一直在尝试像这里建议的那样工作:,但是由于匆忙和其他原因,在进行热修复分支时,我从dev分支,而不是从master分支 简化,假设我们有以下历史: A---B---C--------D---- < developer \ / \ / R1--R2 H1---H2 \ \ --------X---------Y--- &

我已经寻找了一段时间的解决方案,因为我还不是git方面的专家——即使我接近这个解决方案,我也无法稍微修改它来完成它

我一直在尝试像这里建议的那样工作:,但是由于匆忙和其他原因,在进行热修复分支时,我从dev分支,而不是从master分支

简化,假设我们有以下历史:

A---B---C--------D---- < developer
\      / \      /
 R1--R2   H1---H2
       \         \
--------X---------Y--- < master
A---B---C--------D---- < developer
\      /        /
 R1--R2   H1---H2
       \  /      \
--------X---------Y--- < master
A--B--C--D--
R1和R2是relase分支提交,可以。然而,H1和H2是热修复分支提交,H1应该从X(主)分支,而不是从C(开发)分支。既然X和C提交背后都有相同的代码,那么是否可以使用来自X的H1分支呢

我想让它看起来像这样:

A---B---C--------D---- < developer
\      / \      /
 R1--R2   H1---H2
       \         \
--------X---------Y--- < master
A---B---C--------D---- < developer
\      /        /
 R1--R2   H1---H2
       \  /      \
--------X---------Y--- < master
A--B--C--D--
这根本不会改变代码,我只想保持一致性,让分支从它们应该的地方开始。事情是这样的——以后在dev和master分支上几乎没有更多的提交。H1-H2分支基本上已经有一个多月的历史了,之后提交了上百次

正如我所指出的,我是一个git初学者,一直在玩rebase之类的游戏,但结果却大错特错


要解决这个问题吗?

如果不重写H1,然后再重写H2,这也意味着同时重写D和Y,则无法做到这一点。因此,所有提交都需要更改并重新发布。而重新发布已经发布的提交通常是个坏主意。因此,如果这不是一个太大的问题,你不应该这样做,只是保持现状

如果您仍然想这样做,可以按如下方式进行:

  • 基于X创建新的(临时)分支
  • 樱桃采摘H1;结果H1'现在基于X
  • 樱桃树
  • 将主机重置为X(
    git Reset--hard X
  • 将临时分支合并到主分支中
  • 删除临时分支
  • 将开发人员重置为C
  • 将主机合并到开发人员中
  • 使用“强制”选项发布两个分支

哦,好吧,我想我会坚持我所得到的。谢谢