繁体   English   中英

如何将Gerrit分支合并到另一个Gerrit分支

[英]How to merge the Gerrit branch to another Gerrit branch

我正在使用Gerrit 2.4.2版。 我有一个分支master并创建了一个新分支,称为newbranch 然后,我对远程(Gerrit的) newbranch进行了一些更改。 在Gerrit中进行验证后,我将更改合并到newbranch

不,我想将newbranch合并到master ,发送更新master (与newbranch更改合并),并删除newbranch分支。

我尝试这样做:

git fetch
git checkout master
git merge newbranch
git push origin master:refs/for/master

但是Gerrit给出了以下信息:

 ! [remote rejected] master -> refs/for/master (no new changes)

我该怎么办?

据报道,这种情况是Gerrit中的错误。 这是Gerrit问题追踪器的解决方案/解决方法:

据我所知,您目前有2种选择-

  1. 强制推至裁判/裁判。 这只是一个飞速前进,因此从理论上讲,所有内容都已经过审查和验证。 再次这样做是没有意义的,因此只需跳过该过程,然后推送到裁判/标头,而不是裁判/ for。

  2. 继续并创建合并提交。 使用'git merge --no-ff'-即使您不需要快速前进,这也会创建合并提交。 然后,合并提交可以像正常情况一样上载,查看,验证和合并。

我的公司倾向于选择选项2。我将其关闭为wontfix,但是如果您对如何更好地做到这一点有任何建议,请告诉我们。

如果合并是快进合并,则不存在要推送到gerrit的对象,因为快进只是移动分支指针。

您需要通过避免快进来强制合并以创建对象:

git merge --no-ff

以下命令可以正常工作。

git checkout master
git merge --no-ff newbranch

您可以使用默认提交消息进行保存。 确保已生成更改ID。 您可以使用以下命令进行确认。

git commit --amend

然后使用以下命令进行推送。

git push origin HEAD:refs/for/refs/heads/master

您可能会遇到类似以下的错误消息。

! [remote rejected] HEAD -> refs/for/refs/heads/master (you are not allowed to upload merges)

要解决此问题,gerrit项目管理员必须在gerrit中创建另一个引用,名为“ refs / for / refs / heads / master”或“ refs / for / refs / heads / *”(以后将涵盖所有分支)。 然后,向此引用授予“推送合并提交”权限,如果需要提交GCR,则授予“提交”权限。

现在,再次尝试上述push命令,它应该可以工作。

学分:

https://github.com/ReviewAssistant/reviewassistant/wiki/Merging-branches-in-Gerrit

https://stackoverflow.com/a/21199818/3877642

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM