Git,致命:远端意外挂断


278

当我尝试跑步时

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

与不安全有关系吗?我尝试按照“ 致命”的答案创建公用密钥:远端意外挂起并再次运行,但仍然无法正常工作。我不是在实际使用钥匙吗?如果可以,该如何使用?


请显示git remote -v
CharlesB 2013年


13
git config http.postBuffer 524288000#它对我有用
Hari Das

如果您error: could not lock config file .git/config: No such file or directory看到了stackoverflow.com/a/32329453/827525
niksmac

1
我无法获得任何建议的解决方案。然后我尝试了GitKraken。它是少数不使用git.exe的Git程序之一。GitKraken可以做到。在GitKraken推送存储库之后,我可以切换回git.exe并进行同步而没有任何问题。
lars pehrsson

Answers:


83

这看起来类似于我如何使github默认为ssh而不是新存储库的https。可能值得尝试从http协议切换到ssh:

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

为什么我不能只从http切换到https?
DanielLC

10
bash-3.2 $ git remote add origin git@github.com:xxx / xx.git致命的:远程起源已经存在。为什么呢?
almaruf 2014年

11
@almaruf,这是因为遥控器origin已经存在,并且您正在尝试替换它。git不允许这样做。因此,您必须先做git remote rm origin然后再试一次。它将有效
Alfie

如果是新的克隆版本,请确保您初始化了该项目git init
Raul 2016年

您可以使用通过SSH git的协议(需要SSH密钥)或HTTPS协议,通过个人访问令牌需要用户名和密码-我更喜欢后面
劳尔

520

问题是由于git / https缓冲区设置。为了解决它(从Git提取到将commit推送到github时失败

git config http.postBuffer 524288000

并再次运行命令


4
我需要缓冲区大于500MB-可以吗?如果我使postBuffer的数字更高,似乎没有什么不同
jowie 2013年

感谢您提供的链接-我通过将推送分为多个小块对问题进行了排序。如果我再次遇到问题,我知道去哪里找!
jowie 2013年

17
与它一起使用会是个好主意--global吗?我定期处理大型存储库。
DaAwesomeP 2015年

2
@ shivam13juna没有什么是永远从互联网上删除::) web.archive.org/web/20170119225336/http://github.com/gitlabhq/...
罗马中号

3
我运行了“ git config http.postBuffer 524288000”,但问题仍然没有解决,仍然说的一样,远程端意外挂断了
Narendra

80

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

解决方案:

导航回购。

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

git config http.postBuffer 524288000

2
请使用代码标签格式化代码。还请解释代码的作用,因为这是一篇过时的文章,请尽可能使您的答案更好。
丹·格拉恩

31
git config ssh.postBuffer 524288000如果通过ssh而不是http发布,也可以使用 。
约翰M,

对于某些情况git config --global http.postBuffer 100000000
Job M

执行此命令后,我得到“致命:不在git目录中”
ka3ak

@JohnM这个选项似乎不存在,它没有在手册页或git-scm.com/docs/git-config中记录
没人

29

您可能会收到这样的错误

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

那是因为您没有本地.git/config文件,您可以通过此命令使其工作

git config --global http.postBuffer 524288000


这在尝试在cygwin内部的非常慢的PC上克隆时帮助了我-它继续远程挂断-直到我使用此命令
serup

这可以帮助我解决“致命的问题:远程端在初次联系时挂断”问题。
Karthic.K

15

在我的情况下,其他解决方案不起作用,对我进行了垃圾回收修复了该问题:

git gc --aggressive


21
这解决了我的问题,但同时也将分离的HEAD更改压缩为合并状态变得令人讨厌(所有内容都转换为ADD)的状态。我希望我在运行它之前已经对此进行了进一步的研究。
MatrixManAtYrService

这怎么引起问题?
Annadate Piyush

9

与其他答案之一相反-我在使用ssh进行推送时遇到了问题-我切换至https,并且此问题已修复。

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

8

也可能由于缺少存储库上的写权限而引发此错误。


我的具体案例是这样的:

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

4

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

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

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

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

对开发商的呼吁:
这些问题对于农村人口来说一直是一个问题。在设计系统,工具和应用程序时,请想想我们。谢谢。


3

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

运行git remote -v说明了一些问题。



3

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


我们有一个测试版ansible工作流程,正是由于这个原因导致了网站的重建,因此将存储库克隆到另一个存储库之上。可以解决的一个难题,但解决了git问题。谢谢:-)
亚历杭德罗·莫雷诺

2

另外,由于我以不同的方式遇到此错误,因此Google将我带到了这里。

我的问题是案件不匹配;一本骆驼,另一本没有。显然,GIT会阻止您执行此操作,而不会告诉您原因。因此,如果您的分支仅在大小写方面与远程分支不同,请尝试将它们更改为相同。

请参阅: Git:合并后,“ Master无法解析为分支”


我以为我包括了所有相关信息-这是由案件不匹配引起的。我添加了一个更明确的句子,但这与链接无关。很抱歉,如果不清楚。
托马斯

2

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

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


2

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

单击此链接可以允许plesk使用较大的文件上传来重建配置。

我跳过了git的php部分

之后,git push正常工作,没有任何错误。


1

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

解决我问题的方法是:
1.将其克隆到其他虚拟机的其他文件夹中。(Linux)。
2.我已完成更改。
3.使用最初无法推送的原始虚拟机推送它。(视窗)


这不是解决伙伴!
Behrouz.M 2016年

2
我知道这不是理想的解决方案,但是就我而言,它解决了问题。当所有其他答案都失败时,就像我的情况一样,它仍然可以节省生命。
nopara73 '16


1

我也有同样的问题。我从git网页注意到SSH克隆URL具有以下结构:

git@github.com:user/project.git

我可以通过将“:”改为“ /”来解决我的问题,如下所示:

git@github.com/user/project.git

可能对您有所帮助。


1

添加答案似乎几乎毫无意义,但是当我终于发现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,因为我实际上认为它在许多较小的发布中效果更好。

路加


1

似乎可能是上千种事物之一。

对我而言,我最初是通过SourceTree推动master并进行开发(master没有任何更改)。将其更改为仅开发有效。


1

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

经过大量研究,这是我的工作:

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

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


我也有这个确切的问题(虽然从TFS迁移)。我从2.19升级到2.20,它已修复,但粗略浏览发行说明并没有揭示问题的根源。
乔治·理查森

我刚刚升级到2.20.1.windows.1,但仍然不允许我推送到远程存储库
Vidar

@Vidar可能是检查大文件的地方,GitHub的帮助严格限制为100MB。github.com/articles/what-is-my-disk-quota ; 请参阅confluence.atlassian.com/bitbucket/…中的“手动查看存储库中的大文件”部分;该页面本身是不错的阅读。
Mahmoud Hanafy '19

@MahmoudHanafy-谢谢-这是web.config中有关最大文件大小的参数-增加该值和git的行为,每个人都很高兴!对我而言,这不是GitHub,而是Bonobo.Git.Server网站上的私有网站。
维达尔


0

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

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

在Shell中使用的命令:

git clone "URL of repo goes here w/ no quotes"

您所说的“ Git Shell”是什么意思?git在终端中使用?
卡尔·里希特

0

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

然后确保在您的构建中开始运行。评估“ $(ssh-agent -s)” ssh-add〜/ .ssh / id_rsa


0

1)cd到项目目录

2) git status

3) git checkout -f HEAD

4)通过再次拉下master来确认成功,以确保您的仓​​库不完整,以确保您是最新的

如果在从Bitbucket克隆存储库时从Visual Studio的Git中收到有问题的错误,则此方法有效


0

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

我(在不知不觉中)提交了一个带有错误的“作者电子邮件”字段的提交,但是我得到的只是这个模糊的remote end hung up错误消息。我能够推动其他部门只是没有这一个分支,所以我就开始在同一时间从“坏”的一个分支推提交,直到我终于降落在:

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错误有点像“吞噬”了实际的错误消息,这可能是我在此处遇到的某种格式错误的提交。

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


0

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

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


0

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

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


0

上面的答案都不对我有用,但是这就是这样做的。

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


0

我的问题原因是网络设置:我有一个“杀手” wifi卡,它显然以SSH和SSL不喜欢的方式处理网络数据包。

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.