[英]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的功能分支提交了另一个提交。 现在,此提交位于我正在进行的提升的基础提交之上。
现在我该怎么做?
如果我将合并提交基于功能分支,则会删除该合并,并在其顶部添加从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
最新origin/our_feature_branch
以及与git rebase -p
之前相同的origin/dev
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.