3

假设我有一个基于 master 的分支,以合并提交结束:

--A---C<master]---D---E---F<my-feature]
   \ / 
    B

X在交互式 rebase之间添加提交DE简单 - 我运行

git rebase -i master

,将提交D操作设置为edit,变基后变基停止D。我只是在那一刻创建新的提交,然后继续变基。分支现在看起来像

...C<master]---D---X---E'---F'<my_freature].

现在我想在Cand之间添加一个提交D。期望的结果:

C<master]---X---D'---E'---F'<my_freature]

我试过

git rebase -i master~

我想将合并提交设置Cedit,但交互式 rebase 以某种方式忽略了合并提交C并只为我提供链A--B--D--E,因此 rebase 会导致合并提交丢失C

有没有一种简单的方法可以像这样使用交互式 rebase 向分支提交提交?

请注意,我可以想出一个更复杂tmp的解决方案,比如在 上创建新分支master,提交X它然后变基my-featuretmp,我只是好奇是否有一种简单直接的交互式变基方法。

4

1 回答 1

1

我刚刚成功地重现了您的场景并通过将-p选项 ( --preserve-merges) 添加到 `git rebase: 在 C 和 D 之间插入提交 X:

git rebase -i -p master^

工作流程的其余部分如您所描述:告诉 rebase 编辑合并提交,手动插入新的并以git rebase --continue.

顺便说一句,很酷的工作流程!我想我会用它。

编辑:我用 Git 2.4 测试了这个解决方案。如果您有更新版本的 Git,@torek 建议使用更安全的--rebase-merges选项而不是--preserve-merges. 有关说明,请参阅下面的评论。

于 2019-02-22T15:00:17.683 回答