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

时间:2015-11-13 12:34:19

标签: git version-control git-merge git-rebase

我和我的团队正在使用主要音轨(origin/our_feature_branch)之外的远程分支(origin/dev)开发一项功能。 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推送两次提交 - 也不允许。

是否有解决方案,或者我必须重新进行合并并尝试记住告诉每个人我们下次开始进行提升时会停止交付吗?

1 个答案:

答案 0 :(得分:3)

根据评论中的建议,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_branchorigin/dev之前的git rebase -p