如何重新合并合并但保持合并提交

How to rebase a merge but keep the merge commit

我和我的团队正在使用远离主轨道 (origin/dev) 的远程分支 (origin/our_feature_branch) 开发一项功能。 Gerrit用于审查等

通过 git merge origin/dev 完成远程分支的提升,然后修复冲突、提交和 git push origin HEAD:refs/for/our_feature_branch

Gerrit 强制执行一条规则,即一次只能推送一个提交。我对此无能为力。

假设我开始做提升:

git fetch
git checkout -b uplift origin/our_feature_branch
git merge origin/dev

但在这里我无法解决一些冲突,回归测试需要一些时间才能 运行,并且一些团队成员向 Gerrit 中的功能分支提交了另一个提交。此提交现在位于我的 "ongoing" 提升的基础提交之上。

我现在该怎么办?

如果我将我的合并提交重新定位在功能分支上,我会删除合并并添加从 origin/dev 合并的所有提交到它上面 - 不是一个选项。如果我与功能分支合并,我最终会在合并时合并,我最终不得不将两个提交推送到 Gerrit - 也是不允许的。

是否有解决方案,或者我是否必须重新进行合并并尽量记得在下次我开始提升时告诉大家我们有一个交付停止?

根据评论中的建议,git rebase -p 解决了问题

开始创建提升提交:

git fetch
git checkout -b uplift origin/our_feature_branch
git merge origin/dev
git commit

在 Gerrit 中向 origin/our_feature_branch 提交了一些内容。

执行以下操作来变基合并提交并保持合并:

git fetch
git rebase -p origin/our_feature_branch

现在可以将合并提交推送到 Gerrit,它将基于 origin/our_feature_branch 上的最新版本以及与 git rebase -p

之前相同的 origin/dev