Git重组提交

时间:2018-04-23 22:08:03

标签: git version-control

我有以下情况

分支A:c1,c2
分支B:c1,c2,c3,c4
分支D:c1,c2,c3,c4,c5,c6

现在,分支D意味着从分支A分支,但我错误地从分支B分支。提交,c5和c6与提交,C3和c4无关。

如何从分支A创建一个新的分支,E,并且只需将C5和C6提交到这个新分支,使其结构如下:

分支E:c1,c2,c5,c6

1 个答案:

答案 0 :(得分:2)

选项1:

如果你真的只有2次提交,你可以这样做:

git checkout -b E A
git cherry-pick c5
git cherry-pick c6

选项2:

但是git rebase让你一次做多次提交:

gut checkout -b E D
git rebase --onto A B

首先,我们在D处开始一个新的分支E.然后,rebase的语法是将所有内容都放在E“自B”之后,并将其重新发送到“A”。

变体/选项

  • 您可以使用-i标志进行互动,您只能在“todo”中看到提交c5和c6。
  • 从技术上讲,rebase的最后一个参数默认为你所在的分支,但你可以明确地将其调出(E),如果你还没有它,这会有所帮助。