Git/gerrit,推远程拒绝没有做出任何改动

edw*_*yte 36 git gerrit

对提交进行了更改,执行了提交修改.做推,我得到错误:

! [remote rejected] master -> refs/for/master (no changes made)
Run Code Online (Sandbox Code Playgroud)

检查提交消息中的更改ID,它仍然是有效的提交.

我已经尝试更改文件,检查它显示为更改,然后添加到暂存区域并完成另一个提交修改.再次尝试推送并获得相同的问题.不知道这个.

编辑:这是推动gerrit,而不是直接git.

我在跑:

git push origin master:refs/for/master
Run Code Online (Sandbox Code Playgroud)

获取原产地详细信息的结果是(公司详细信息已删除):

$ git remote show origin
* remote origin
  Fetch URL: ssh://lytee@gerrit.mycompany.net:29418/myrepo
  Push  URL: ssh://lytee@gerrit.mycompany.net:29418/myrepo
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master rebases onto remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
Run Code Online (Sandbox Code Playgroud)

edw*_*yte 50

此问题是由于我之前执行的操作.我正在尝试进行push一项新的变更,除了仍在审核的变更之外,谁的父母也在审核.

 Trunk ------ Parent A ----- Parent B ----- New change
(merged)     (unmerged)     (unmerged)
Run Code Online (Sandbox Code Playgroud)

我曾经习惯cherry-pick在本地获取这两个更改(Parent A和Parent B),然后第三个cherry-pick在尝试之前从本地分支获取我的更改push.这就是造成这个问题的原因,因为我个人的改变主要是试图重写历史.

正确的过程是pull在主干时只有父B.这会自动提取trunk和它之间的任何提交(在这种情况下只是Parent A).然后cherry-pick我的新变化,push并将工作正常.

  • 我们今天遇到了这个问题.问题在于我们在gerrit中:Change1(合并) - Change2(未合并) - Change3(未合并)我们想要将新的补丁集发布到Change3但它被拒绝了.消息:``![远程拒绝] master - > refs/for/master(没有做出任何更改)``在我们头脑中发现我们已经在本地重新定位并且Change2也收到了一个新的提交哈希但它没有新的更改.我们通过再次在本地重新定位交互来解决它,并通过在提交消息的末尾添加一个字符来重写Change2.之后发布就可以了. (10认同)

ben*_*inz 5

请在此处参考有关此问题的官方文档:

https://gerrit-review.googlesource.com/Documentation/error-no-new-changes.html

我遇到了同样的问题,我的问题是我推送了更改,然后放弃了合并,然后进行了一些调整,错误地修改了提交并再次推送。那是我得到错误的地方。

我的解决方法:

  1. 如果您只是想快速解决此问题,请执行以下操作git commit --amend,删除现有的change-Id,并假设您已设置git钩子,则可以完成提交并change-Id应为您分配一个新的。
  2. 进入gerrit并搜索现有内容change-Id,找出正在发生的情况,然后进行相应的修复。(推荐的)