Git,致命:远端竟然挂了

当我试图逃跑的时候

git push origin master --force

我刚刚

Counting objects: 2649, done.
Delta compression uses 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

这和缺乏安全感有关吗?我尝试创建一个公钥作为致命:远端意外挂机的答案并重新运行它,但它仍然不工作。我不是在用钥匙吗?如果是,我该如何使用它?

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

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

这是由于git/https缓冲区设置。

运行这个语句(取自Git push commit to github失败):

git config http.postBuffer 524288000

然后,再次运行原来的命令。

原因:Git的默认文件大小已经超过。

解决方案:导航到repo。进入存储库后,运行如下命令将缓冲区增加到500MB:

git config http.postBuffer 524288000

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

运行git remote -v可以解释这个问题。

此错误也可以通过存储库上的缺少写权限抛出。


我的具体案例是这样的:

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

我碰巧在拉的时候有同样的错误 我已经完成了http。postBuffer”技巧。它解决了这个问题,但是当我想要推的时候,我又遇到了错误。< / p > 什么解决了我的问题:
1. 将其克隆到其他虚拟机的其他文件夹。(Linux)。< br > 2. 我已经做了我的改变 3.用我最初无法操作的原始虚拟机推动它。(Windows) < / p >

当我在.ssh中有不正确的keypair时,我得到这个错误。将pubkey添加到github(在设置中)为我修复了这个问题。

如果你正在为windows使用git(如果你在windows机器上执行此操作,则很可能是这样),并且这里的其他修复都不适合你,请尝试转到https://github.com/git-for-windows/git/releases,并获得2.4.5版本或之后的版本。帮我搞定了。

您可能在现有的存储库中克隆了存储库,要解决这个问题,可以简单地在另一个目录中克隆存储库,并将更改复制到这个新目录,然后运行推送。

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

git@github.com:user/project.git

我可以通过“/”改变“:”来解决我的问题,如下:

git@github.com/user/project.git

也许这会有帮助。

您可能会得到这样的错误

error: could not lock config file .git/config: No such file or 目录< / p >

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

git config --global http.postBuffer 524288000

我能够使用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会在不告诉你原因的情况下阻止你这么做。因此,如果您的分支只在大小写上与远程分支不同,请尝试将它们更改为相同。

< p >看: Git: 'Master无法解析到branch'合并后 < / p >

当我把远程分支名称拼错时,我得到了这个错误

与其他答案之一相反——我在使用ssh推送时遇到了问题——我切换到https,它已经修复了。

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

添加一个答案似乎是毫无意义的,但是当我最终发现它是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帖子缓冲区设置回2 MB,因为我认为它对许多较小的帖子工作得更好。

其他解决方案在我的情况下不起作用,做垃圾收集为我解决了这个问题:

git gc --aggressive

你可以先尝试使用git gc

这可能发生在更新OSX平台之后。

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

这似乎是千百种情况中的一种。

对我来说,我最初是通过SourceTree推动master和develop (master没有变化)。将其改为开发只起了作用。

这样做可以看到你正在使用的键:

ssh -vT git@github.digitalglobe.com

然后确保在你的构建中你在一开始就运行了这个:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

1) CD到项目总监

2) git status

3) git checkout -f HEAD

4)确认成功下拉大师再次确保你是最新的,如果你的回购看起来不完整

如果你在从Bitbucket克隆一个repo时从Visual Studio的Git中得到错误,这是有效的

我在上传一个大型回购时也遇到过类似的错误,“致命:远程端意外挂起”,没有任何进一步的细节。

在做了大量研究之后,我是这样做的:

  • 使用SSH代替HTTPS并不能解决问题。
  • <李>增加http。postBuffer增量到一个很大的值,仍然是no 李运气。< / > 我想可能是因为里面的文件太大了 回购(因为这是从perforce新迁移的回购),所以我使用LFS重新创建了回购,将largeFileThreshold设置为40m,这大大降低了回购大小(从3.5G到500M)。 我以为这样可以解决问题,但令我惊讶的是,我仍然面临同样的错误
最后,我突然想到,我可能正在使用一个较旧的git客户端,因为我没有看到额外的错误消息。 我升级git客户端至最新(2.20.1),瞧,错误消失了!< / p >

PLESK Nginx和GIT 我在plesk git上得到这个错误,而在推动一个大的回购(谁知道什么)时,它给了我这个HTTP代码413的错误,我研究了以下内容 服务器是Plesk,它有nginx运行以及apache2,所以我查看了日志,在nginx日志

中发现了错误

遵循这个链接,允许plesk用更大的文件上传重建配置。

我跳过了git的php部分

在git推送工作之后,没有任何错误。

如果您推送的任何提交都是畸形的,也会发生这种情况。

我(不知不觉地)提交了一个畸形的作者电子邮件字段,但我得到的只是这个模糊的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错误是某种“吞噬”实际的错误消息,这可能是某种畸形的提交,就像我在这里看到的那样。

在修复了错误的电子邮件后,我能够很好地推动。

我不认为这是一个好主意,但如果你有备份在你的机器..再推一次,然后尝试克隆repo,然后从旧目录中删除.git,并从新的克隆文件夹中移动.git。Git已解决,但由于这个问题,一些文件可能无法在Git上上传。再次从你的备份,然后把它拉到你的服务器或其他机器,它得到curcurt。现在我刚做了这个…对我有用。在这样做之前,备份一下你的文件夹。

如果我说错了,请指正。我也不知道这样做之后会出什么问题?但这次真的管用了。

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

Git存储库文件的所有者必须是你想要用它推送/拉/克隆的用户。

上面的答案对我都没用,但下面的答案对我有用。

  1. 从项目中删除.git/
  2. 克隆远程回购到一些新的位置,如你的桌面:
    git clone https://github.com/foo/bar.git
    
  3. .git/从新位置移动到旧位置
  4. 重新提交并推动您的更改

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

为了解决这个问题,我不得不进入“杀手控制中心”,“参数”,并禁用“高级流检测”- git命令立即重新开始工作。

这篇文章有很好的解释,它解决了我的问题。

git config --global http.postBuffer 157286400

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

< p > 罪魁祸首(就我而言): < br >

这本身不是一个答案,而更多的是一种观察,可以帮助其他人。我发现这个错误偶尔会在高延迟网络上弹出(例如,我必须使用卫星天线上网)。网络的速度很好,但延迟可能很高。注意:问题只存在于某些场景,但我还没有确定是什么模式。

< p > 临时缓解: < br > 我换了网络——我换到了一个更慢,但延迟更低的蜂窝网络(我的手机用作热点)——问题消失了。请注意,我只能周期性地这样做,因为我的手机连接也是间歇性的。再加上带宽的使用增加了成本。我也很幸运,我有这样的选择。

我确信在某个地方有一些配置设置使git -或ssh或curl或任何先超时的东西对这样的网络更宽容,但我不知道它是什么。

< p > 对开发商的呼吁: < br > 这类问题对农村人口来说是一个持续的问题。当您设计系统、工具和应用程序时,请考虑我们。谢谢你。< / em >

在我的情况下,我得到了这个错误,当推动与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

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

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

确保你有良好的网速。

基于您正在使用的推送到回购的协议

HTTP

git config --global http.postBuffer 157286400

引用:

SSH

在您的linux机器的~/.ssh/config文件中添加以下内容

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

引用:

有同样的问题,尝试所有答案不工作,只是尝试另一个帐户,这为我工作。

如果使用GitHub,在repo的目录中,运行这个命令将http.postBuffer设置为GitHub允许的最大值:

git config http.postBuffer 2147483648

如果使用git clone来克隆一个回购,则可以使用相同的选项克隆它:

git clone -c http.postBuffer=2147483648 git@github.com:myuser/myrepo.git /path/to/myrepo

在这两种情况下,上面的数字等价于2直布罗陀海峡。然而,您可能需要达到这个数量的空闲内存才能使用这个值。

确保每次推送到GitHub都提交不超过这个大小的更改。事实上,为了安全起见,我会将提交推的大小保持在1.8 GiB以下。这可能需要将一个大的提交划分为更小的提交和推送

为什么是这个值?

使用这个特定的值是因为至少在2018年,这个值是记录 (归档链接)作为GitHub的推送大小限制:

我们不允许超过2GB的推送

为什么不放低一点呢?

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

为什么不设高一点呢?

如果你将这个值设置为高于2 GiB,并且如果你尝试的推送大小也更高,你可以期待GitHub的文档错误:

远程:致命:包超过允许的最大大小

对我来说,我得到了相同的错误我试图从一根根本不存在的树枝上拉东西。

所以好心拉的时候检查一下分支名称。

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

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

去仓库>在GitHub桌面的命令提示符中打开

.执行以下命令
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1
git push origin <branch>

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

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

< p >致命:远程端挂意外MiB | 7.00简约/ s
致命:早期EOF
index-pack失败< / p >

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

唯一的解决方案是重新安装我的“网卡(WiFi)驱动软件”。所以,我想强调的是,上述错误也可能是由你电脑的WiFi驱动软件的问题造成的。如果上述答案都不工作,那么您可以尝试重新安装WiFi驱动程序。这将解决问题。

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

  1. 打开网络和internet设置
    网络和互联网设置 < / p >

  2. 选择'Network reset'
    reset network settings < / p >

  3. 选择'Reset now'
    reset network < / p >

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

在我的案例中,这个错误是因为VPN连接中断。只需关闭和打开VPN就可以修复这个错误。

以上的解决方案都不适合我,但是我要提交的任务非常大。

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

下面的命令可能会帮助你…

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

我也得到了这个错误。第二个git push完成了这个任务

对我们来说,问题是我们有大量的文件,应该由git lfs来管理。

我们采取了以下措施来解决问题:

# Soft reset so you can author a new commit
git reset --soft HEAD~1


# Install git lfs
git lfs install


# Track large files of a specified file type YMMV
git lfs track "*.uasset" "*.umap"


# Re-add everything
git add .


# Author a new commit
git commit -m "git lfs ftw"


# Push
git push

对于我来说,我使用git子模块,通过以下方法解决:

git fetch

然后,在同一分支上创建develop的任何提交。

git push origin develop
git pull origin develop

我与fatal: The remote end hung up unexpectedly有相同的错误消息,没有一个答案解决了我的问题。我通常的工作流程是这样的:

  • 本地签出基本分支(设置了远程源)
  • 从本地的基分支构建子分支
  • 完成我所有的编码
  • 承诺我的东西
  • push它(然后控制台会告诉我,没有上游设置)
    • 通过git push --set-upstream origin <remote branch name>设置upstream

之后,我的代码通常被推送-但在这种情况下,我有一个提交,我触摸110+文件,我得到了错误。

解决方案:

  • git branch -m <branch name temp>重命名当前本地分支
  • 签出基本分支(因为它最好与创建本地分支的状态相同)
  • 用最终名称git checkout -b <branch name>创建新的子分支
  • 现在不需要任何提交就推入新的子分支,这样它就在远程端创建了(同样是通过git push --set-upstream origin <remote branch name>)
  • <branch name temp>分支中选择提交
  • 推送提交(在检查我以正确的顺序选择了所有提交后,第一个提交需要是第一个被选择的)

然后就成功了。

希望这也能帮助到这里的一些人!:)

我尝试了上面的大部分选项,没有一个对我有用, 但这是有效的

git reset origin/branch_name --force

这可能会起作用,但你会失去你的工作 你可以将更改复制到git的旧或新位置