Git push remote被拒绝{change ### closed}

时间:2012-08-15 15:32:53

标签: git gerrit

由于此错误,我在将更改从本地主服务器推送到远程主服务器时出现问题:

remote: Processing changes: refs: 1, done
To ssh://xxxxx@gerrit.dev.xxxxx.net:29418/xxxxxx
 ! [remote rejected] HEAD -> refs/for/master (change 14823 closed)
error: failed to push some refs to 'ssh://xxxxx@gerrit.dev.xxxxx.net:29418/xxxxxx'

任何想法如何解决这个问题?

git status表示我的分支在5次提交之前超过了origin / master。

17 个答案:

答案 0 :(得分:34)

我得到了同样的信息。这是因为我已经设法为两次提交获得相同的Change-Id。也许是因为我当地的分支机构之间的一些挑选或类似的。通过从提交消息中删除Change-Id来解决,然后由提交挂钩添加了新的Id。

答案 1 :(得分:14)

您的提交更改ID已过期,即审核14823已关闭。你不能推动它。

这样做是为了解决问题:

  1. git commit --amend
  2. 删除更改ID
  3. 保存并退出
  4. 新的更改ID将添加到提交中。它可以通过git log验证。
  5. 再次推送

答案 2 :(得分:6)

我找到了以下页面,其中详细说明了由于更改XXXXX关闭错误导致您无法将更改推送到原点的原因:https://git.eclipse.org/r/Documentation/error-change-closed.html

干杯!

答案 3 :(得分:3)

你有5次提交。

所有这些文件都有一个名为" Commit Message" (Gerrit使用) 其中一个文件有一个错误的" Change-Id"那已经被接受了 并且由Gerrit合并为主人,因此不能再使用。

一个解决方法是将所有5个提交合并为一个,
在这样做的过程中,
删除" Change-Id"在文件"提交消息"。

在我的情况下,我有3次提交,所以我做了:
git rebase -i HEAD~3

还有其他方法可以合并多个提交:
Squash my last X commits together using Git

答案 4 :(得分:1)

change 14823 closed消息并非来自vanilla git。它表明维护该存储库的任何人都有一个更新或更新后的挂钩,它正在评估您的推送并因本地策略而拒绝它(我猜您正在为已经标记为已完成/已关闭的问题添加其他提交)。您需要找出这些策略是什么,以及您是否需要以某种方式重新打开更改,以便您可以添加提交,或者如果您需要创建新的更改请求并且(可能)重新设置您的工作它

答案 5 :(得分:1)

  

git status表示我的分支在5次提交之前超过了origin / master。

     

我正在做的就是获取最新的代码。做一些调整并推动它。

这5次提交是什么?它们都是你的吗?

更改14823是否对应于这5个提交中的一个?它在Gerrit中的地位是什么?

答案 6 :(得分:1)

在我的情况下,我有2次提交,第一次提交是我的,但第二次提交不是,所以我这样解决:

  1. 找出在更改14823
  2. 中提交的文件
  3. 找到您最早的提交,然后将重置为其父级。请注意,如果您进行硬重置,则可能会丢失所有提交内容。
  4. 尝试再次提交您的更改,但此时没有来自更改14823
  5. 的文件

    我希望它有用。

答案 7 :(得分:0)

如果您同时重新评估并选择了与已关闭(合并或放弃)的审阅相关的提交,则只需重新设置基准即可,而不是选择删除该提交(s)与该评论有关。然后,您应该可以再次无问题地进行推送。 我强烈不同意播放/修改变更ID的建议。 详细介绍git命令,这将给出:

git fetch; git rebase origin/a_branch --interactive

选择每个提交... 解决冲突,然后git add ...

git rebase --continue
git push origin HEAD:refs/for/refs/heads/a_branch

->远程拒绝...更改###已关闭

然后执行以下操作:

git fetch; git rebase origin/a_branch --interactive

选择(选择)除与更改###相关的应提交(删除)的提交以外的所有提交。 您不应该有任何冲突,并且可以立即成功进行重新设置基准(冲突已在先前的重新设置基准中得到解决)。然后:

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

答案 8 :(得分:0)

问题可以是多个,但是如果问题是您的更改是在过时的提交之上(出于任何原因,它可能已被合并),您只需要:

第1步:在要删除git log的提交之前找到提交

第2步:签出git签出

第3步:使用您当前的签出提交新分支git checkout -b

步骤4:现在,您需要在删除的提交git cherry-pick

之后添加提交

现在将您的更改推送给Gerrit,它应该接受它们。

请参阅:https://www.clock.co.uk/insight/deleting-a-git-commit

答案 9 :(得分:0)

EGit用户的解决方案:

  1. 单击“修改”按钮 enter image description here

    1. 使用退格按钮从提交消息区域删除Change-Id(这将与此屏幕截图不同)
    2. 点击“添加更改ID”按钮enter image description here

    3. 提交您的更改&推。

答案 10 :(得分:0)

你有5次提交。

每次提交都有一个"提交消息"可能包含" Change-Id:"用于标识提交的变更请求属于Gerrit的字符串(请参阅https://git.eclipse.org/r/Documentation/user-changeid.html

在这种情况下,由Change-Id字符串标识的一个(或多个)变更请求已由Gerrit合并或放弃,因此无法再次使用。

您需要在推送之前修改一个(或多个)提交的提交消息(请参阅http://schacon.github.io/history.html),删除以创建新的变更请求,或修改它们,以便它们为每次提交识别正确的Gerrit变更请求。

答案 11 :(得分:0)

如果已经存在已经合并甚至放弃的gerrit的变化,就会发生这种情况。如果放弃,这是我的情况,恢复gerrit的更改并在恢复的更改之上应用新的更改。

https://gerrit-review.googlesource.com/Documentation/error-change-closed.html

答案 12 :(得分:0)

我也遇到了这个问题,当我推送我的提交时,终端说:

! [远程拒绝] HEAD - > refs / for / android_ui.lnx.1.2.c1-dev(更改1692698已关闭)

我去查看网站查看更改对应的1692698,提交消息是: "首次启用WiFi主机时提示USB网络共享"

然后在终端显示提交日志:

  • b49c0f91744cb6f863616976c4fb4157c7af4b8c启用连接Wi-Fi的USB网络共享时提示不正确。
  • eb47ef919064aff516ced4bbd9d8ade0ed34b107首次启用WiFi主机时提示USB网络共享
  • 753668be1207baa514be1bbd985f3db2d6317608修复hotstop通知错误。

推送失败的原因是当前的changID与eb47ef919064aff516ced4bbd9d8ade0ed34b107提交的相同。所以我备份当前更改并重置为753668be1207baa514be1bbd985f3db2d6317608,然后最后应用备份更改,添加,提交和推送。

希望这可以解决您的问题。

答案 13 :(得分:0)

我和我的高级工作超过1小时才能得到解决方案, 所以我在下面试过,它对我有用

  1. 备份.git / logs / refs / heads / {{branch}}文件夹中的所有分支以及repo中更新的文件
  2. 删除导致错误的分支
  3. 创建分支“git branch'{{new branch name}}'”
  4. 将回购文件移回相关文件夹
  5. git commit -m“{{commit message}}”
  6. git push origin HEAD:refs / for / master
  7. 每件事都应该很好并且做得很好

答案 14 :(得分:0)

试试这个。 git push --no-thin origin xxxxxx:refs / for / sprint / yyyyyy

答案 15 :(得分:0)

你正在推动gerrit,这是一个代码审查工具,如url(ssh://xxxxx@gerrit.dev.xxxxx.net:29418 / xxxxxx)和“HEAD - > refs”所示/ for / master“消息。您需要咨询维护您尝试推送的存储库的任何人,以便找出更改被拒绝的原因。

答案 16 :(得分:-2)

这应该这样做:

git commit --amend

删除更改ID,然后推送进行审核。