假设我有一个分支B1,其最后一次提交的提交为C1-> C2-> C3,另一个分支B2的最后一次提交的提交为C4-> C5-> C6。
如何用B2中的提交C4替换B1中的提交C2?
答案 0 :(得分:2)
您可以使用交互式基准库来做到这一点-但不是不是在B2上将B1基准库。而是:
git rebase -i B1 hash-of-C2^
(代替C2的哈希,您将输入C2的实际哈希,即看起来像ddc18e47147f4f5cb969609150c4d29040b2c07f
的十六进制字符串,您可以使用git log
看到它)
然后,在编辑器中,您将看到:
pick short-hash-of-C2 commit comment here
pick short-hash-of-C3 commit comment here
(短哈希将是C2完整哈希的前缀,例如ddc18e47
)
现在,将C2的keep
替换为drop
,但为C4添加一行,以便您现在拥有:
drop short-hash-of-C2 commit comment here
pick full-hash-of-C4
pick short-hash-of-C3 commit comment here
(请注意,C4的短哈希也应该起作用,但是我只想复制整个哈希,不要将其缩短以防万一。)
就是这样。当然,您可能需要解决由于这些更改而引起的冲突,就像在任何重新设置基准中一样。
答案 1 :(得分:0)
假设这些分支都已发布,则可能需要使用还原/樱桃选择选项:
# on branch B1
git revert C2
git cherry-pick C4
这将使分支B1
如下所示:
C1 -- C2 -- C3 -- RC2 -- C4
但在功能上应与以下内容大致相同:
C1 -- C4 -- C3