Gerrit:![远程拒绝] HEAD -> refs/publish/master(没有新的更改)

11

我进行了一些更改,提交了它们并将分支推送到Gerrit (git push gerrit)。现在我的更改在Gerrit中不可见,我认为这是因为我手动推送了更改,而没有使用git review。 现在当我运行git review时,我得到以下错误:

remote: Processing changes: refs: 1, done    
To ssh://user@gerrit-host:29418/Project
! [remote rejected] HEAD -> refs/publish/master (no new changes)
error: failed to push some refs to 'ssh://user@gerrit-host:29418/Project'

我该如何告诉Gerrit,让他审核我的变更集?


1
git review 这个别名代表什么意思? - Tim
1
@TimCastelijns: https://github.com/openstack-infra/git-review - lrineau
最简单的解决方法是进行微小的编辑(比如编辑注释),修改提交并使用正确的命令重试。 - Tim
使用修订功能将只显示在审查板上“修改”的更改。 - laplasz
5个回答

8
你可以从远程分支中删除该提交,或者你可以这样做。
git commit --amend

这将创建一个新的补丁

git push gerrit HEAD:refs/for/your_branch

对我来说,当我将相同的补丁推送到主分支和一个特性分支时发生了这种情况。问题在于两个补丁具有相同的更改ID,因此第二次推送被拒绝了。在提交 -amend之后,它正常工作了。 - dlp

5
我认为问题在于提交已经在远程分支中。这就是为什么推送时没有新的更改。首先尝试从远程分支中删除提交,然后将提交推送到审核分支。

这不会影响Gerrit的内部数据库吗? - stackular
我认为问题在于远程分支上已经有一个包含你试图推送到审查分支的changeId的提交。不,它不会成功,因为这个带有changeId的提交还没有被审查 - 所以Gerrit数据库中没有任何关于它的条目。 - laplasz

0

我发现git review不会提交没有更改的分支。它基本上是在说:“由于您的提交中没有更改,所以没有理由提交...因此我不会提交”。与你的情况不同,在先前的推送中出现错误时,这种情况发生过。

在这些情况下,我所做的就是简单地添加一个微小的更改(比如添加一个空行),以便gerrit将其视为不同,并且然后它就可以正常工作了。

另一件事情是(取决于你的组织使用的过程),从你的变更日志中删除Change-Id(使用git commit --amend),然后运行git review,从而创建一个新的审查集,从Gerrit的角度来看,重新开始。


0

git commit --amend 无法解决多个提交,只能将最后一个提交推送到 Gerrit。

另一种解决方法是检出并使用 cherry-pick commitid1 commitid2 commitid3,然后推送。


-2

为避免此错误

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

只需按照以下步骤进行

git commit --amend # this will create a new patch
git push gerrit HEAD:refs/for/your_branch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接