【问题标题】:On git push I got error: error: invalid protocol: wanted 'old new ref'在 git push 我得到错误:错误:无效协议:想要'旧新参考'
【发布时间】:2025-12-16 12:35:02
【问题描述】:

我有分支 x。我输入git push origin x:y

我收到错误消息

error: error: invalid protocol: wanted 'old new ref'
fatal: internal server error
fatal: The remote end hung up unexpectedly
Counting objects: 140, done.

也许这很重要:当我克隆存储库时,为了性能,我使用了开关

-b master --single-branch

git 版本 2.6.2.windows.1

gerrit 2.9.4 版

【问题讨论】:

  • 尝试“git push origin HEAD:refs/for/x”
  • @love “推送到 refs/for/* 会创建必须经过批准然后提交的代码审查”。我不想审查,因为y 是我的私人分支机构,以确保源代码安全。
  • 你试过“git push -u origin x:y”吗?
  • @love 是的,结果是一样的

标签: git gerrit git-push


【解决方案1】:

您的 Gerrit 服务器运行的是什么版本的 Git/Gerrit?

https://phabricator.wikimedia.org/T86304

它与浅层克隆有关; git 1.7 可以从浅克隆推送 在某些情况下(包括一个新的克隆,这是 g-p-u 所做的),并且 如果服务器支持,git 1.9 总是可以从浅克隆推送。

如果您的 Gerrit 服务器不支持从浅克隆推送,您可能无法使用

--单分支

【讨论】:

    【解决方案2】:

    当我决定对这个问题进行最终调查时,发现

    git fetch --unshallow
    

    解决问题。

    (解决意味着允许推送分支,而不是浅克隆推送分支)

    【讨论】: