如何向后反转,最好不使用diff / apply?

时间:2014-12-29 19:10:41

标签: git rebase

我有以下提交历史记录:

(master)              (topic)   (quickfix)
       a -> b -> c ->       d ->         e

我想修改它,看起来像这样:

     (master, quickfix)              (topic)   
a ->                  e -> b -> c ->       d

换句话说,master处于提交a。我开始在topic分支上工作,但在那个分支上我看到了一个问题并修复了不相关的代码。我在quickfix分支中执行了此操作,但分支来自topic而不是master。我想将quickfix合并回master,但没有 topic中所做的任何更改。

我知道我可以使用diff / apply最终到达我想去的地方,但这已经发生在我身上几次,我发现差异/应用工作流程有点麻烦。 git中是否有一项功能可以让这更容易?

1 个答案:

答案 0 :(得分:4)

没有一个命令可以执行此操作,但是一个相对简单的序列可以执行此操作,在master分支上运行时运行:

# make it so that it's as if quickfix were branched off of master instead
# of topic
git rebase --onto master topic quickfix

# proceed as normal
git merge quickfix
git rebase master topic

我最初没有理解这一点的原因是我不知道--onto的{​​{1}}选项。我在阅读git rebase时发现了它,它有一个类似的例子。