是否有一个简单的命令来通过变基法合并主题分支?

时间:2012-02-15 16:25:26

标签: git

从分支主机开始,要合并主题分支,只需说

git merge topic

但是,如果想要改变,则命令是

git rebase master topic
git checkout master
git merge topic

最后两行只是将主分支快进到主题分支,因此可以进行变化,例如,我喜欢以下模式:

git rebase master topic
git rebase topic master

当保留本地“主题”分支的状态时,它会变得更加复杂:

git checkout -b tmp topic
git rebase master
git rebase tmp master
git branch -d tmp

有一个简单的命令吗?什么工作像CLI上的git-merge一样简单,但实际上执行了一个rebase,而没有移动主题分支?

2 个答案:

答案 0 :(得分:2)

没有一个完美的命令可以一次性完成这项工作,但是还有一个非常接近的命令。

假设topic完全符合master顶部而不会发生冲突,这可以从master分支开始:

git cherry-pick master..topic

master..topictopic但不是master的一组更改,如果topic完全master,那么按顺序挑选它们实际上是一个变基}}

对于双命令完全保真的情况(或三个保存topic),我不会像你那样做两个rebase,我会做rebaseupdate-ref为清晰起见。

答案 1 :(得分:1)

绝对没有内置的功能。这是一个足够复杂的动作序列,它实现起来并不是一件容易的事情:你期望在rebase失败时发生什么?

在任何情况下,如果你不介意做一些古怪的事情,比如使用rebase来实现快进,那么你可能更愿意做git push . topic:master,这至少会确保它是快进的。

您可以做的最好的事情是对其进行别名/编写,以便git merge-rebased master topic表示git rebase master topic && git checkout master && git merge topic或您喜欢的任何变体。