我已经在 SO 和其他文档上对此进行了研究。我尝试过变基、合并、挑选和分离头。
在尝试了 6 个小时之后,是时候提出这个问题了!
这是我开始的内容:
A-B-C-D-E-F-G master
这是我想将其更改为:
A-B F-G master
\ /
C-D-E dev
我最接近的是:
A-B C-D-E-F-G-H Main
\ /
C-D-E dev
\
F-G master
我必须添加另一个分支名称和一个虚拟提交才能使分支完全正常工作。
但这比没有变化更糟糕。
请帮忙!
回复后更新
感谢您的回复。
是的,我的“我想要什么”不是很清楚。希望这可以澄清它:
A-B - F-G master
\ /
C-D-E dev
换句话说,F 处的“master”是 B 加上分支“dev”合并到其中的结果。
还是行不通
感谢@frasertweedale 的尝试回答。
我已仔细按照您的指示进行操作,结果如下:
A-B - "merge branch 'dev'"-G master
\ /
C-D-E dev
\
F-G-"merge branch 'dev'"-F-G
我很高兴这很难:现在花了 7 个小时在这上面,我感觉没有那么糟糕!
最终结果 正如@frasertweedale 所说,这正是我想要的,除了悬空提交。
所以,我只需要摆脱悬垂。
为了清楚起见,我在下面重新绘制了:
A-B - "merge branch 'dev'"-G2 master
\ /
C-D-E dev
\
F1-G1-"merge branch 'dev'"-F2-G2
这个命令进行清理:
git rebase -p --onto F1^ F1
结果:
A-B - "merge branch 'dev'"-G2 master
\ /
C-D-E dev
“merge branch 'dev'” 包含原始的 F 提交,当然,可以这样重新注释。