我有以下提交历史:
(master) (topic) (quickfix)
a -> b -> c -> d -> e
我想修改它,让它看起来像这样:
(master, quickfix) (topic)
a -> e -> b -> c -> d
换句话说,master
处于提交 a
。我开始在 topic
分支上工作,但在那个分支上我发现了一个问题并修复了不相关的代码。我在 quickfix
分支中执行此操作,但该分支来自 topic
而不是 master
。我想将 quickfix
merge 回 master
,但是没有在 topic
中所做的任何更改.
我知道我可以使用 diff/apply 最终到达我想去的地方,但这在我身上发生过几次,我发现 diff/apply 工作流程有点麻烦。 git 中是否有使这更容易的功能?
最佳答案
没有一个命令可以做到这一点,但是一个相对简单的序列可以做到这一点,在 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
起初我不明白这一点的原因是我不知道 git rebase
的 --onto
选项。我在阅读 git help rebase
时发现了它,其中有一个足够相似的示例。
关于git - 如何向后 rebase ,最好不使用 diff/apply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27694597/