【发布时间】:2015-11-13 12:34:19
【问题描述】:
我和我的团队正在使用远离主轨道 (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将合并提交重新基于新提交? -
阅读文档,
-p看起来很有希望。星期一回到办公室时,我会试试看,谢谢! -
警告:从 Git 2.18(2018 年第二季度,5 年后)开始,
git --rebase-merges最终将取代旧的git --preserve-merges。见What exactly does Git's “rebase --preserve-merges” do (and why?)
标签: git version-control git-merge git-rebase