我有以下提交历史记录:
(master) (topic) (quickfix)
a -> b -> c -> d -> e
Run Code Online (Sandbox Code Playgroud)
我想修改它,使其看起来像这样:
(master, quickfix) (topic)
a -> e -> b -> c -> d
Run Code Online (Sandbox Code Playgroud)
换句话说,master正在提交a。我开始在一个topic分支上工作,但在该分支上我发现了一个问题并修复了不相关的代码。我在一个quickfix分支中执行此操作,但该分支来自topic而不是master. 我想合并quickfix回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
Run Code Online (Sandbox Code Playgroud)
我一开始不理解这一点的原因是我不知道 的--onto选项git rebase。我在阅读时发现了这一点git help rebase,其中有一个足够相似的例子。
| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |