133

我只有一个分支。几个月来我一直在使用

git push origin master

提交到我的本地存储库。昨晚在我对本地存储库进行了一些小改动并尝试使用相同的命令推送之后,我收到了这个错误:

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

我用谷歌搜索并找到了诸如this onethis one之类的问题,但是这些问题的答案都没有解决我的问题。

大多数答案都暗示了头部脱落的问题。然而,我不认为我的头是分离的。我也不认为我在错误的分支上(因为我只有一个分支......)

我做了一些实验来找出问题所在,这是我得到的结果:

(1) 首先是我的git status输出

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# egal.aux
# egal.blg
# egal.out
# egal.pdf
# egalcar.aux
# egalcar.blg
# egalcar.pdf
nothing added to commit but untracked files present (use "git add" to track)

(2) 当我输入 时git reflog,我可以看到我所有的本地提交,但远程存储库不会得到更新。

(3)当我输入git branch -a时,我得到

* master
  remotes/origin/master

(4)当我输入git remote show origin时,我得到

* remote origin
  Fetch URL: http://github.com/CherryQu921/egaldoc_en
  Push  URL: http://github.com/CherryQu921/egaldoc_en
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

我认为输出的最后一行(“快速转发”)很奇怪,但我不确定出了什么问题......

4

6 回答 6

303

如果您尝试使用 HTTP 或 HTTPS 将大量更改推送到 Git 存储库,您可能会收到错误消息,例如 error: RPC failed; result=22, HTTP code = 411。这是由 Git 配置默认值导致的,该默认配置将某些 HTTP 操作限制为 1 兆字节。

要更改此限制,请在本地存储库中运行

git config http.postBuffer *bytes*

其中 bytes 是允许的最大字节数。例如:

git config http.postBuffer 524288000

500MB(感谢@Hengjie)

于 2012-09-29T10:11:27.910 回答
25

您也可以在全球范围内执行此操作 -

git config --global http.postBuffer 524288000

这将允许所有本地存储库推送多达 500MB 的数据。

于 2014-03-18T14:08:32.023 回答
3

提供的解决方案都不适合我们。我们不得不切换到ssh使这项工作而不是HTTPS解决方案。

于 2015-05-26T19:56:36.183 回答
2

如果您使用的是 Windows 版 TortoiseGit,最简单的方法是使用集成配置。

在文件资源管理器中按下鼠标左键,选择TortoiseGit -> Settings。接受信息消息。现在,您可以选择是否只想为当前项目或系统范围配置属性。对于系统范围的配置,请按“编辑系统范围的 gitconfig”并将下一行添加到该部分[http]

postBuffer = 524288000

(如果该部分[http]不存在,请创建它)

于 2014-10-21T09:38:01.140 回答
1

我解决了 22 错误如下:在“git clone”命令中,我没有提供用户:密码。克隆工作,但不是推动。22错误的解决方法:修改 .git/config 的 url 如下: url= http://user:pwd@host/ ... 然后,推送工作。

于 2017-10-14T22:46:29.137 回答
-2

使用 git lfs 并跟踪大于 1 mb 的文件,然后再次尝试推送

于 2022-01-24T18:19:53.800 回答