Git 更改分支的父级
我已经寻找了一段时间的解决方案,因为我还不是git方面的专家——即使我接近这个解决方案,我也无法稍微修改它来完成它 我一直在尝试像这里建议的那样工作:,但是由于匆忙和其他原因,在进行热修复分支时,我从dev分支,而不是从master分支 简化,假设我们有以下历史: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--- &
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
- 将主机合并到开发人员中
- 使用“强制”选项发布两个分支