Git:如何基于先前的提交

时间:2019-01-24 00:47:43

标签: git

我正在基于分支B的分支C,然后是分支A:

A---B---C

是否有任何命令可以像这样直接基于分支A创建分支C:

A---B \ --C

我尝试过git rebase A,但是它不起作用。

3 个答案:

答案 0 :(得分:1)

git rebase --onto A B C

说明:

在rebase命令中,您可以定义:

  1. 分支机构进行基础调整(默认= HEAD)
  2. 分支到基础的上游分支
  3. 要重新定位到的目标分支(默认=上游分支)

命令是

git rebase --onto TargetBranchToRebaseTo UpstreamBranch BranchToRebase

实际上,您可以在git help rebase

中找到确切的例子

答案 1 :(得分:0)

这就是我要做的:

git checkout C
git checkout -b rebaseTemp
git rebase -i A

在交互式rebase中,删除所有与分支B对应但不属于分支C的提交(即,在两者之间共享的提交)。完成变基,然后您将有一个新分支(rebaseTemp),其中包含我认为您想要的东西。然后,您可以将A合并到rebaseTemp中(这将导致快速合并)。

在这种情况下,分支可视化工具(即gitk)非常有用,因此您可以查看共享的提交。

答案 2 :(得分:0)

Git在rebase中有一个内置选项,可以做到这一点:

git checkout C
git rebase --onto A B

这会将B之后的所有提交重新定位为C,以便它们从A而不是B开始。

相关问题