Git,致命:远程端意外挂断

时间:2013-03-06 06:51:03

标签: git visual-studio github bitbucket

当我试图跑

git push origin master --force

我刚才

Counting objects: 2649, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (1280/1280), done.
error: RPC failed; result=22, HTTP code = 413 | 116 KiB/s   
fatal: The remote end hung up unexpectedly
Writing objects: 100% (2504/2504), 449.61 MiB | 4.19 MiB/s, done.
Total 2504 (delta 1309), reused 2242 (delta 1216)
fatal: The remote end hung up unexpectedly
Everything up-to-date

与不安全有关吗?我尝试在Fatal: The remote end hung up unexpectedly的答案中创建公钥并再次运行它,但它仍然不起作用。我实际上没有使用钥匙吗?如果是这样,我该如何使用它?

42 个答案:

答案 0 :(得分:457)

问题是由git / https缓冲区设置引起的。 为了解决它(取自Git fails when pushing commit to github

git config http.postBuffer 524288000

再次运行命令

答案 1 :(得分:70)

原因:已超出Git的默认文件发布大小。

解决方案:

导航到repo。

导航到存储库后,运行以下命令将缓冲区增加到500MB:

git config http.postBuffer 524288000

答案 2 :(得分:67)

这与How do I get github to default to ssh and not https for new repositories类似。 可能值得尝试从http协议切换到ssh:

$ git remote add origin git@github.com:username/project.git

答案 3 :(得分:22)

您可能会收到类似这样的错误

  

错误:无法锁定配置文件.git / config:没有这样的文件或   目录

那是因为你没有本地.git/config文件你可以通过这个命令让它工作

git config --global http.postBuffer 524288000

答案 4 :(得分:11)

其他解决方案在我的案例中没有用,为我修复垃圾收集:

git gc --aggressive

答案 5 :(得分:8)

此错误也可以通过存储库中的缺少写入权限来引发。


我的具体案例是这样的:

  1. 我使用服务器的root用户(通过SSH)创建了一个repo。
  2. 我安装了a git service并创建了一个git linux用户,该用户应该管理所有与git相关的操作。
  3. 到那时,我忘记了回购首先是使用root用户创建的,而git用户根本没有文件权限可以将任何内容写入存储库。

答案 6 :(得分:7)

罪魁祸首(以我为例):
高延迟网络。

这本身并不是答案,而是更多可以帮助他人的观察结果。我发现此错误偶尔会在高延迟网络上弹出(例如,我必须使用Satellite碟进行互联网访问)。网络速度很好,但是延迟可能很高。注意:该问题仅在某些情况下存在,但我尚未确定模式是什么。

临时缓解措施:
我切换了网络,转而使用了速度较慢但延迟较低的蜂窝网络(我的电话用作热点),问题消失了。请注意,我只能间歇性地执行此操作,因为我的单元连接也是间歇性的。再加上带宽使用会增加成本。我也很幸运能够使用此选项。并非每个人都如此。

我确定某个地方的某些配置设置会使git(或ssh或curl或首先超时)更能容忍此类网络,但我不知道它是什么。

对开发人员的请求:
这类问题对于农村人口来说是一个长期存在的问题。在设计系统,工具和应用程序时,请想想我们。谢谢。

答案 7 :(得分:4)

本文有很好的解释,它解决了我的问题。

git config --global http.postBuffer 157286400

https://confluence.atlassian.com/stashkb/git-push-fails-fatal-the-remote-end-hung-up-unexpectedly-282988530.html

答案 8 :(得分:4)

根据您用于推送回购协议的协议

HTTP

git config --global http.postBuffer 157286400

参考:

SSH

在Linux计算机的~/.ssh/config文件中添加以下内容

Host your-gitlab-server.com
  ServerAliveInterval 60
  ServerAliveCountMax 5
  IPQoS throughput

参考:

答案 9 :(得分:3)

最近我遇到了同样的问题。克隆远程存储库时出现如下错误:

<块引用>

致命:远端意外挂断 MiB | 7.00 KiB/s
致命:早期EOF
索引包失败

当我用谷歌搜索错误时,我被重定向到这里。我遵循了大部分答案,但没有解决我的问题。

唯一的解决方案是重新安装我的“网络适配器 (WiFi) 驱动程序软件”。所以,我想强调的是,上述错误也可能是由您的 PC 的 WiFi 驱动程序软件中的问题引起的。如果上述答案均无效,则您可以尝试重新安装 WiFi 驱动程序。它将解决问题。

您可以轻松地重新安装 WiFi 驱动程序,如下所示:

  1. 打开网络和互联网设置
    Network and internet settings

  2. 选择“网络重置”
    reset network settings

  3. 然后选择“立即重置”
    reset network

重启电脑后,尝试git操作成功(推/拉/克隆)。

答案 10 :(得分:3)

您可能在现有存储库中克隆了存储库,解决问题只需在另一个目录中克隆存储库并将更改复制到此新目录,然后运行推送。

答案 11 :(得分:3)

与其他答案相反 - 我在使用ssh推送时遇到了问题 - 我切换到https并修复了它。

git remote remove origin
git remote add origin https://github..com/user/repo
git push --set-upstream origin master

答案 12 :(得分:3)

在我们的例子中,问题是编写.git/config文件的克隆,其中包含一个只读访问方法的url条目。将网址从://方法更改为@方法可解决问题。

正在运行git remote -v解决了这个问题。

答案 13 :(得分:2)

我通过重新打包解决了这个问题:

git repack --max-pack-size=100M -a -d

转到存储库 > 在 GitHub Desktop 的命令提示符中打开 运行以下命令:

set GIT_TRACE=1
set GIT_CURL_VERBOSE=1
git push origin <branch>

答案 14 :(得分:2)

另外一个补充,因为我以不同的方式遇到了这个错误,谷歌把我带到了这里。

我的问题是案件不匹配;一个camelCase而另一个没有。显然,GIT在没有告诉你原因的情况下阻止你这样做。因此,如果您的分支仅与大写字母不同,请尝试将它们更改为相同。

请参阅: Git: 'Master cannot be resolved to branch' after merge

答案 15 :(得分:2)

如果使用GitHub,请在存储库目录中运行以下命令,将http.postBuffer设置为GitHub的最大允许值:

config system admin user
edit admin
set rpc-permit read-write
end

如果使用git config http.postBuffer 2147483648 克隆仓库,则可以使用相同的选项克隆它:

git clone

在两种情况下,上述数字均等于 2 GiB 。但是,可能需要多达此可用内存量才能使用此值。

确保对GitHub的每次推送所提交的提交所添加的内容不超过此更改的大小。实际上,为了安全起见,我会将提交推送大小保持在1.8 GiB以下。这可能需要将大型提交分为较小的提交和推送

为什么要使用此值?

之所以使用此特定值,是因为至少截至2018年,此值是documented (archive link)作为GitHub的推送大小限制:

我们不允许推送超过2GB

为什么不降低价格?

一些先前的答案说将其设置为524288000(500 MiB),但是这个数字似乎是任意的,没有价值。只要您的推送大小不大于设置值,任何较小的值都应起作用。

为什么不设置更高?

相反,如果将值设置为大于2 GiB,并且如果尝试的推送大小也更大,则可以预期GitHub记录的错误:

远程:致命:装箱超过允许的最大尺寸

答案 16 :(得分:2)

如果您正在使用git for windows(如果您在Windows机器上使用git,可能就是这样),并且此处没有其他修复工作适合您,请尝试转到https://github.com/git-for-windows/git/releases,然后获取版本2.4.5或之后的版本。为我修好了。

答案 17 :(得分:2)

更新OSX平台后可能会发生这种情况。

打开终端并导航到.ssh文件夹,然后输入ssh-add -K ~/.ssh/id_rsa

答案 18 :(得分:1)

上述解决方案都不适合我,但是我推动的提交非常大。

很简单,我把它分成两个提交,然后分别推送每个提交,它立即通过。

答案 19 :(得分:1)

即使配置了后缓冲区,问题也没有解决。

当我将wifi网络从宽带更改为移动热点时,我的问题得到解决。这在逻辑上可能不是正确的答案,但已解决了该问题。

请确保您具有良好的互联网速度。

答案 20 :(得分:1)

就我而言,使用Intellij Idea推送时出现此错误。

这是我查找并修复错误的方法。

  • 在终端中启用调试日志记录,这绝不是一个坏主意:)
set GIT_CURL_VERBOSE=1 set GIT_TRACE=1 
  • 通过终端而不是通过intellij推送
git push 
-> fatal: The current branch feature/my-new-feature has no upstream branch.
To push the current branch and set the remote as upstream

解决方案是设置上游,该上游在之前一定已经出错了:

git push --set-upstream origin feature/my-new-feature

答案 21 :(得分:1)

以下命令可能对您有所帮助...

git config --global http.postBuffer 1048576000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999

答案 22 :(得分:1)

我在拉动时碰巧遇到同样的错误 我已经完成了“http.postBuffer”技巧。它解决了它,但是当我想推动时,我又遇到了错误。

什么解决了我的问题:
 1.使用其他虚拟机将其克隆到其他文件夹。 (Linux)的。
 我做了我的改变  3.用我最初无法推送的原始虚拟机推送它。 (Windows)中

答案 23 :(得分:1)

当我在.ssh中输入错误的密钥对时出现此错误。将pubkey添加到github(在设置中)为我修复了这个问题。

答案 24 :(得分:1)

我有同样的问题。我在git网页上注意到SSH克隆URL具有下一个结构:

git@github.com:user/project.git

我可以解决我的问题,只需更改&#34;:&#34; by&#34; /&#34;,如下:

git@github.com/user/project.git

可能会有所帮助。

答案 25 :(得分:1)

我上载大型存储库时遇到了类似的错误,即“致命:远程端意外挂起”,而没有任何其他详细信息。

经过大量研究,这是我所做的:

  • 使用SSH代替HTTPS并不能解决问题。
  • 将http.postBuffer递增到一个非常大的值,仍然没有 运气。
  • 我发现这可能是由于文件较大 仓库(因为这是从perforce迁移而来的新仓库),所以我使用LFS重新创建了仓库,将largeFileThreshold设置为40m,这极大地减少了仓库的大小(从3.5G到500M)。 我以为这可以解决问题,但令我惊讶的是,我仍然遇到相同的错误。

最后,我发现可能是我使用的是旧版git客户端,因为我没有看到其他错误消息。 我将git客户端升级到最新版本(2.20.1),瞧,错误消失了!

答案 26 :(得分:1)

似乎它可能是千件之一。

对我而言,我最初是通过SourceTree推动大师并开发(大师没有变化)。改变这种发展只会有效。

答案 27 :(得分:0)

似乎几乎毫无意义地添加了一个答案,但是当我终于发现Visual Studio Online遭遇零星停电时,我正在争吵多年。当VS继续提示输入信用证时,这一点就变得很明显了,VSO网站有时会给出500分。

Counting objects: 138816, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (38049/38049), done.
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
The remote end hung up unexpectedly/138816), 33.30 MiB | 3.00 KiB/s
Writing objects: 100% (138816/138816), 50.21 MiB | 3.00 KiB/s, done.
Total 138816 (delta 100197), reused 134574 (delta 96515)
fatal: The remote end hung up unexpectedly
Everything up-to-date

之后我将HTTP后缓冲区设置回2Mb,因为我认为它对许多较小的帖子效果更好。

答案 28 :(得分:0)

就我而言,此错误是因为 VPN 连接断开。只需关闭并打开 VPN 即可修复错误。

答案 29 :(得分:0)

从 vscode 上的 bash shell 切换到 zsh 为我修复了它。

答案 30 :(得分:0)

我能够使用Git Shell解决这个问题。

github.com中的每个存储库都为您提供了可以使用Shell下载的HTTPS / SSH / Subversion URL,请参见此处:http://prntscr.com/8ydguv
根据GitHub最近的变化,SSH似乎是最好的方法。

在Shell中使用的命令:

wget http://github.com/[username]/[repo]/archive/master.zip

答案 31 :(得分:0)

对我来说,当我试图从一个甚至不存在的分支中拉取数据时,我遇到了同样的错误

在拉取时检查分支名称。

答案 32 :(得分:0)

当我拼错我的远程分支名称

时出现此错误

答案 33 :(得分:0)

遇到相同的问题,并尝试所有答案均不起作用,只需尝试另一个帐户,即可为我工作。

答案 34 :(得分:0)

PLESK Nginx和GIT 我在plesk git上遇到此错误,同时用(谁知道)推送大型仓库,它用HTTP代码413给了我这个错误,我调查了以下内容 服务器是Plesk,它运行着Nginx以及apache2,因此我查看了日志并在Nginx日志中发现了错误

后跟this link,以允许plesk使用较大的文件上传来重建配置。

我跳过了git的php部分

那次git push正常工作了。

答案 35 :(得分:0)

这样做可以查看您正在使用的密钥; ssh -vT git@github.digitalglobe.com

然后确保在您的构建中,您在开始时运行此操作。 eval&#34; $(ssh-agent -s)&#34; ssh-add~ / .ssh / id_rsa

答案 36 :(得分:0)

1)cd到项目目录

2)git status

3)git checkout -f HEAD

4)通过再次拉下主人来确认成功,以确保在您的回购看上去不完整时更新

如果您从Bitbucket克隆回购时从Visual Studio的Git中收到有问题的错误,这是有效的

答案 37 :(得分:0)

对我来说,问题在于网络设置:我有一个“杀手” wifi卡,显然可以用SSH和SSL不喜欢的方式处理网络数据包。

要解决此问题,我必须进入“杀手控制中心”,“参数”并禁用“高级流检测”-git命令立即又开始工作。

答案 38 :(得分:0)

以上所有答案均不适用于我,但这就是这样做的。

1)从您的项目中删除.git/
2)将远程仓库克隆到桌面等新位置。 git clone https://github.com/foo/bar.git
3)将.git/从新位置移到旧位置
4)重新提交并推送您的更改

答案 39 :(得分:0)

我的问题(致命:远程端意外挂起)已通过检查存储库许可权和所有者来解决。

git存储库文件的所有者必须是您要与其一起推/拉/克隆的用户。

答案 40 :(得分:0)

我认为这样做不是一个好主意,但是如果您在您的计算机中进行了备份,请再按一次,然后尝试克隆repo,然后从旧目录中删除.git,然后从新克隆的文件夹中移动.git。 git已解决,但由于该问题,某些文件可能无法在git上载。再次将所有内容从ur推回,然后将其拉到urserver或损坏的另一台计算机上。现在我只是做这件事...对我有用..并在执行此操作之前备份您的目录。

如果我错了,请纠正我。我也不知道这样做后会出错吗?但这一次确实有效。

答案 41 :(得分:0)

如果您要推送的任何提交格式不正确,也会发生这种情况。

我(在不知不觉中)提交了一个带有错误的“作者电子邮件”字段的提交,但是我得到的只是这个模糊的remote end hung up错误消息。我能够推送其他分支,而不仅仅是这个 one 分支,所以我一次一次推送了来自“坏”分支的提交,直到我最终登陆:

Pushing to git@github.com:directangular/unicorn.git
Counting objects: 100% (9/9), done.
Delta compression using up to 20 threads
Writing objects: 100% (5/5), 549 bytes | 549.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: error: object 74c7584ff0b93591c19d3a3c19695889dd2274d2: badEmail: invalid author/committer line - bad email        
remote: fatal: fsck error in packed object        
error: remote unpack failed: index-pack abnormal exit
To github.com:directangular/unicorn.git
 ! [remote rejected]       pizzafeast -> pizzafeast (failed)
error: failed to push some refs to 'git@github.com:directangular/unicorn.git'

因此,看来remote end hung up unexpectedly错误有点“吞噬”了实际的错误消息,这可能是某种形式的错误提交,就像我在这里一样。

修复格式错误的电子邮件后,我可以正常发送邮件。