由于此错误,我在将更改从本地主服务器推送到远程主服务器时出现问题:
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。
答案 0 :(得分:34)
我得到了同样的信息。这是因为我已经设法为两次提交获得相同的Change-Id。也许是因为我当地的分支机构之间的一些挑选或类似的。通过从提交消息中删除Change-Id来解决,然后由提交挂钩添加了新的Id。
答案 1 :(得分:14)
您的提交更改ID已过期,即审核14823已关闭。你不能推动它。
这样做是为了解决问题:
git commit --amend
答案 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次提交,第一次提交是我的,但第二次提交不是,所以我这样解决:
我希望它有用。
答案 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,它应该接受它们。
答案 9 :(得分:0)
答案 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网络共享"
然后在终端显示提交日志:
推送失败的原因是当前的changID与eb47ef919064aff516ced4bbd9d8ade0ed34b107提交的相同。所以我备份当前更改并重置为753668be1207baa514be1bbd985f3db2d6317608,然后最后应用备份更改,添加,提交和推送。
希望这可以解决您的问题。
答案 13 :(得分:0)
我和我的高级工作超过1小时才能得到解决方案, 所以我在下面试过,它对我有用
每件事都应该很好并且做得很好
答案 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,然后推送进行审核。