【问题标题】:Gerrit: ! [remote rejected] HEAD -> refs/publish/master (no new changes)格瑞特:! [远程拒绝] HEAD -> refs/publish/master(无新更改)
【发布时间】:2014-07-11 13:29:31
【问题描述】:

我做了一些更改,提交它们并将分支推送到 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 我的变更集需要审查?

【问题讨论】:

  • 别名git review 代表什么?
  • 最简单的修复方法是进行超级次要编辑(编辑评论或其他内容),修改提交并使用正确的命令重试
  • 使用 amend 将仅在审查板上显示那些“已修改”的更改

标签: git gerrit


【解决方案1】:

您可以从远程分支中删除该提交,也可以这样做

git commit --amend

这将创建一个新补丁

git push gerrit HEAD:refs/for/your_branch

【讨论】:

  • 对我来说,这发生在我为 master 推送相同的补丁,然后为功能分支推送相同的补丁时。问题是这两个补丁具有相同的更改 ID,因此第二次推送被拒绝。提交后 --amend 它工作正常。
【解决方案2】:

我认为问题在于提交已经在远程分支中。这就是为什么 push 没有新的变化。先尝试remove远程分支的提交,然后将提交推送到review分支。

【讨论】:

  • 这不会弄乱 Gerrit 的内部数据库吗?
  • 我认为问题在于,在远程分支上已经有一个带有该 changeId 的提交,您也尝试将其推送到审查分支。不,它不会因为这个带有该 changeId 的提交尚未审查 - 所以在 Gerrit 数据库中没有任何条目。
【解决方案3】:

我发现git review 不会提交没有更改的分支。它基本上是在说:“因为你的提交没有变化,所以没有理由提交......所以我不会”。和你的情况不同,我之前推送出错的时候就出现过这种情况。

在这些情况下,我所做的只是添加一个小改动(例如添加一个空行),以便 gerrit 看到不同的东西,然后它就可以工作了。

您可以做的另一件事(取决于您的组织使用的流程)是从您的变更日志中删除 Change-Id(使用 git commit --amend),然后运行 ​​git review,从而创建一个新的审查集,本质上是盯着就 Gerrit 而言。

【讨论】:

    【解决方案4】:

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

    另一个解决方案是结帐并使用cherry-pick commitid1 commitid2 commitid3,然后推送。

    【讨论】:

      【解决方案5】:

      为了避免这个错误

      ! [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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-02
        • 1970-01-01
        • 2020-08-23
        • 2012-02-17
        • 2018-07-02
        • 2015-05-13
        • 2019-10-16
        • 2011-11-17
        相关资源
        最近更新 更多