39

对提交进行了更改,执行了提交修改。推一下,我得到了错误:

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

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

我尝试更改文件,检查它是否显示为更改,然后添加到暂存区域并进行另一次提交修改。再次尝试推送并遇到相同的问题。没有这个想法。

编辑:这是推向 gerrit,而不是直接推向 git。

我在跑:

git push origin master:refs/for/master

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

$ 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)
4

10 回答 10

51

这个问题是由于我之前执行的操作造成的。我正在尝试push一个新的变化,在一个仍然有待审查的变化之上,他的父母也有待审查。

 Trunk ------ Parent A ----- Parent B ----- New change
(merged)     (unmerged)     (unmerged)

我曾经cherry-pick在本地获取这两个更改(父 A 和父 B),然后cherry-pick在尝试push. 这就是导致问题的原因,因为我个人的改变本质上是试图重写历史。

正确的过程是在中继线时仅对pull父 B 进行处理。这会自动拉起主干和它之间的任何提交(在这种情况下只是父 A)。然后cherry-pick我的新变化在此之上并且push会正常工作。

于 2013-01-09T16:01:00.947 回答
8

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

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

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

我的修复:

  1. 如果您只是想快速解决此问题,请git commit --amend删除现有的change-Id,假设您设置了 git 挂钩,您可以完成提交,并且change-Id应该为您分配一个新的。
  2. 进入 gerrit 并搜索你现有的change-Id,找出发生了什么,并相应地修复。(受到推崇的)
于 2017-03-15T19:00:25.643 回答
3

我遇到过同样的问题。只是更改了提交消息并推送了代码。它是成功的。

于 2018-08-28T17:32:30.590 回答
2

如果您尝试更新一组评论,每个评论都有自己想要维护的更改 ID(例如,在您交换两个提交的顺序的 rebase 之后),如果其中的一些提交可能会被拒绝桩保持不变。您应该通过改写提交或类似的东西来强制生成新的哈希。

于 2014-01-15T02:38:12.937 回答
1

听起来您所做的一切都是正确的,只要验证您已经做出了 Gerrit 应该接受的更改。

git push origin master:refs/for/master

也许这就是问题所在?如果您的更改不在您的本地版本的主分支上,则您没有推送您的更改。而是尝试:

git push origin HEAD:refs/for/master

HEAD是一个快捷方式,表示您在 git 中的当前提交。

于 2012-12-21T20:51:24.960 回答
0

我遇到过同样的问题。与此同时,还有另一个提交没有合并到 master 中,正在 gerrit 审查中并在 gerrit 中重新设置。即代码推送审查。在 gerrit 中重新设置基础并等待完成。审查代码后,我就可以毫无错误地推送。

于 2014-04-25T09:30:59.327 回答
0

我有相同的错误消息,但我试图推送的更改是在原始更改集的不同提交之上的(做了一些魔术git cherry-pick,似乎 gerrit 不喜欢它)。我放弃了最初的更改,然后在意识到可以解决问题时重新打开它,但未能将git review.

此时,我的快速解决方案是放弃 gerrit 网站的原始更改,并通过删除change-Id: sha1提交消息的最后一行来创建新的更改git commit --amend

于 2014-11-25T20:17:27.223 回答
0

如果推送的提交与此更改的当前补丁集相同,则 Gerrit 拒绝将提交作为更改的新补丁集推送此错误消息。

推送的提交被认为与当前补丁集相同,如果

  • 提交中的文件,
  • 提交消息,
  • 提交的作者和
  • 提交的父母

都是相同的。

于 2016-08-16T10:19:30.217 回答
0

当我用 a 推送时出现此错误

git commit -m  "updated message"

忘了包括 --amend

git commit --amend -m  "updated message"
于 2021-10-06T15:56:54.983 回答
-1

我的简单解决方案是更新项目,然后提交和推送。

这个帮助,因为 master 和你的本地分支不一致。这可能是,当您可能基于 gerrit...

于 2019-11-20T16:48:12.383 回答