我只有一个分行。我已经使用了几个月了
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
我用谷歌搜索并找到了诸如thisone和thisone之类的问题,但这些问题的答案都没有解决我的问题。
大多数答案都表明了分离头的问题。但我不认为我的头脑是分离的。我也不认为我走错了分支(因为我只有一个分支......)
我做了一些实验来找出问题所在,以下是我得到的结果:
(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)
我认为输出的最后一行(“快进”)很奇怪,但我不确定出了什么问题......
如果您尝试使用 HTTP 或 HTTPS 将大量更改推送到 Git 存储库,您可能会收到错误消息,例如 error:
RPC failed; result=22, HTTP code = 411
。这是由 Git 配置默认值引起的,该配置默认值将某些 HTTP 操作限制为 1 MB。
要更改此限制,请在本地存储库中运行
git config http.postBuffer *bytes*
其中 bytes 是允许的最大字节数。例如:
git config http.postBuffer 524288000
500MB(感谢@恒杰)
您也可以在全球范围内执行此操作 -
git config --global http.postBuffer 524288000
这将允许所有本地存储库推送最多 500MB 的数据。
提供的解决方案都不适合我们。我们必须切换到
ssh
才能完成这项工作,而不是 HTTPS
解决方案。
如果您使用 Windows 版 TortoiseGit,最简单的方法是使用集成配置。
在文件资源管理器中按鼠标左键,选择TortoiseGit -> Settings。接受信息消息。现在,您可以选择是否只想为当前项目或系统窗口配置该属性。对于系统范围的配置,请按“编辑系统范围的 gitconfig”并将下一行添加到部分
[http]
:
postBuffer = 524288000
(如果
[http]
部分不存在,请创建它)
我解决了22错误,如下: 在“git clone”命令中,我没有提供用户:密码。 克隆有效,但推送无效。 22错误的解决方法: 像这样修改 .git/config 的 url: url=http://用户:pwd@host/... 然后,推动就起作用了。
使用
git lfs
跟踪大于 1 MB 的文件,然后再次尝试推送