如何剪掉树枝的尖端,然后将其放在其他位置?

时间:2018-12-05 20:00:06

标签: git

我在一个分支development上,并创建了一个新分支feature1。我编写了功能1,感到很高兴,因此决定开始进行功能2的工作。因此,我创建了一个新分支feature2并进行了一次提交。不好了!现在我的树看起来像这样:

dev <- . <- . <- feature1 <- feature2

但是feature1feature2应该都从dev分支出来,像这样:

dev <- . <- . <- feature1
 ^
  \--- feature2

如何获得此结果?我整夜都在尝试各种形式的git rebase,但没有任何乐趣。

3 个答案:

答案 0 :(得分:1)

假设分支的名称如图所示,那么rebase命令应如下所示:

git rebase feature1 feature2 --onto dev

git rebase的一种语法是:

git rebase <upstream> <branch> --onto <newbase>

如果指定了<branch>,则Git首先执行git checkout <branch>。然后,它计算<upstream>与当前已签出分支之间的基本提交。在我们的例子中,feature1本身是基本提交,因为它是feature2的祖先。接下来,Git将获取当前已检出分支的所有提交,直到该基本提交,然后将其应用于<newbase>

答案 1 :(得分:0)

一个选项:

git checkout feature2
git rebase -i dev
# Delete all commits between 'dev' and feature2

答案 2 :(得分:0)

这可以通过首先创建新分支来完成:

git checkout -b feature2 dev

接着是摘樱桃:

git cherry-pick feature1

然后回到旧分支并从那里删除提交:

git checkout feature1
git reset @^ --hard
相关问题