我有以下提交历史记录:
(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中是否有一项功能可以让这更容易?
答案 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
时发现了它,它有一个类似的例子。