我在一个分支development
上创建了一个新分支feature1
。我编码了特性1,很高兴,并决定开始处理特性2,所以我创建了一个新的分支feature2
并提交了一次。哦不!现在我的树看起来像这样:
dev <- . <- . <- feature1 <- feature2
但feature1
和feature2
都应该是dev
的分支,如下所示:
dev <- . <- . <- feature1
^
\--- feature2
怎样才能达到这样的效果呢?我整晚都在尝试各种形式的git rebase
,但没有得到任何乐趣。
发布于 2018-12-06 04:13:34
假设分支的名称如下所示,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>
。
发布于 2018-12-06 04:06:17
一种选择:
git checkout feature2
git rebase -i dev
# Delete all commits between 'dev' and feature2
发布于 2018-12-06 04:09:51
这可以通过首先创建新的分支来完成:
git checkout -b feature2 dev
然后是精挑细选:
git cherry-pick feature1
然后返回到旧的分支,并从那里删除提交:
git checkout feature1
git reset @^ --hard
https://stackoverflow.com/questions/53639875
复制相似问题