当我有一个像这样的git图时:
A - B - C
\
E - F - G - H
\ /
I - J
有可能吗?如果有,我需要使用什么命令才能得到这样的结构:
A - B - C - E - F - G - H
\ /
I - J
我尝试过很多git rebase选项,但都没有得到我想要的结果。
我尝试使用--onto选项,但它创建了一个单独的分支,我需要手动解决冲突。
2条答案
按热度按时间pu82cl6c1#
只需将
--rebase-merges
添加到rebase
命令中。如果存在合并冲突,只需解决它们。请慢慢来,耐心等待。下面的例子证明了这一点,我们从下面的拓扑结构开始:
确保这与第一张图的拓扑完全相同。现在:
结果:
同样,确保这个拓扑结构与第二个图完全相同。
(As你已经在评论中被告知,大多数提交的SHA不可避免地会改变;这就是rebase的含义,但它们是正确的提交,正如复制的提交消息所示。
uubf1zoe2#
我发现实际上不用手动解决冲突的方法是使用rerere git的特性。rerere用来保存冲突解决方案,并在合并中再次遇到冲突时应用它们。在git repo中有一个叫做rerere-train.sh的手工脚本,它可以使用过去合并提交中的合并冲突解决方案手动训练rerere。
因此,要回答我最初的问题,需要在将
rerere-train.sh
脚本下载到父目录后运行以下命令:对于重定基分支中的更多合并rerere-train.sh可在每个合并的重定基之前使用www.example.com。