我正在尝试使用以下命令推动Gerrit的更改,
git push origin HEAD:refs/for/audi
但是我收到以下错误:
fatal: One or more refs/for/ names blocks change upload
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我在SO和其他网站尝试了其他解决方案,但没有成功,如:
https://review.typo3.org/Documentation/error-change-upload-blocked.html
命令:
git for-each-ref refs/for
什么都不返回。
我很难向客户提供重要的软件交付,请帮助。
注意: git remote的响应如下:
git remote -v
origin ssh://14.140.172.187:29418 / android_m / hlos / platform / build (读取)
origin ssh://14.140.172.187:29418 / android_m / hlos / platform / build(push)
答案 0 :(得分:1)
虽然您可能没有要删除的任何本地refs/for
分支(因为您提到命令git for-each-ref refs/for
什么都不返回),Gerrit documentation for that error message确实规定了:
“
refs/for/
”命名空间下的分支可以由绕过Gerrit的用户创建,直接推送到git存储库本身(不使用Gerrit服务器的SSH端口)。
首先使用git remote -v
检查原点所引用的内容(它应该是gerrit服务器)
但是还要检查代理的最终仓库是否正在使用Gerrit仓库:这是没有/refs/for
分支的地方。在 远程仓库中,您应该删除任何refs/for
分支。
“那个”回购意味着“权威”回购。
如果你有权直接推送到那个远程仓库(再次,不是Gerrit那个,而是Gerrit应该推送到那个),你需要删除那些远程分支。
克隆该repo,应用doc中提到的命令:
for n in $(git for-each-ref --format='%(refname)' refs/for);
do git update-ref -d $n; done
然后用git push --mirror
推回。
如果您无权推送到该远程客户端仓库,请联系客户并要求在该目标仓库中进行清理。