git push失败 - 致命错误: 远程终端意外挂断

9

我在本地创建了一个Git仓库。当我尝试推送到GitHub时,出现以下错误:

Warning: Permanently added the RSA host key for IP address '140.82.112.4' to the list of known hosts.
Enumerating objects: 47, done.
Counting objects: 100% (47/47), done.
Delta compression using up to 8 threads
Compressing objects: 100% (39/39), done.
Writing objects: 100% (47/47), 756.22 KiB | 9.11 MiB/s, done.
Total 47 (delta 7), reused 0 (delta 0), pack-reused 0
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
client_loop: send disconnect: Broken pipe

当我运行 git remote -v 命令时:

origin  git@github.com:crwils/react_unit_and_cypresstesting.git (fetch)
origin  git@github.com:crwils/react_unit_and_cypresstesting.git (push)

尝试增加git缓冲区大小:

git config --global http.postBuffer 157286400

参考其他类似问题/解决方案,在这里,我也尝试了以下几种方法:

  • git repack
  • 删除并创建新的SSH密钥
  • 删除.git文件并重新初始化仓库,然后推送
  • 删除.git文件,将所有文件移动到新文件夹中,在本地初始化一个新的仓库,然后推送到github上的新远程仓库
  • 更换不同的互联网连接

这种情况刚开始发生在一些现有的仓库和新的仓库中,但是对于其他仓库则没有出现过,没有明显的主题。

有人可以帮忙吗?


2
http.postbuffer 对 SSH 没有影响,除非您确定需要它,否则不应使用。当它修复问题时,这表明远程服务器或您的网络不符合1999年编写的标准,应进行修复。 - bk2204
您的问题很可能是某种网络问题。除了标准的网络问题外,代理和非默认防病毒软件和防火墙程序也可能是此类问题的原因。 - bk2204
4个回答

8

首先检查是否使用HTTPS代替SSH可以解决问题:这将使问题隔离在SSH端口22上。

cd /path/to/react_unit_and_cypresstesting
git remote set-url https://github.com/crwils/react_unit_and_cypresstesting.git
git push

您需要输入您的GitHub用户名和密码,但它们可以缓存在凭据助手中。


@Craig 是的。例如,在企业环境中,我肯定不能使用SSH。 - VonC
1
我明白了,感谢您的帮助。实际上,我刚刚尝试从HTTPS返回到SSH,使用git remote set-url origin git@github.com:crwils/vu_app_project.git,似乎已经解决了问题。有什么方法可以解决SSH问题吗? - crwils
看起来运行得很好,但最后出现以下情况。尝试将存储库推送到GitHub时,如果没有先切换到HTTPS,SSH问题仍然存在。“您已成功进行身份验证,但GitHub不提供shell访问权限。 debug1:通道0:free:client-session,nchannels 1 传输:发送3452,接收2868字节,用时0.2秒 每秒字节:发送15588.6,接收12951.4 debug1: 退出状态1” - crwils
@petecarapetyan 你也像 OP 一样推送到 GitHub 吗?或者是另一个远程 Git 仓库托管服务(例如 GitLab)? - VonC
@VonC 不理解 OP 这个术语 - GitHub是我这些仓库的唯一提供者。理论上,我也会推送到Bitbucket,但从未使用过这些仓库,且已有几年没有这么做了。这种新行为大约一个月前出现,并适用于我经常推送的十几个仓库中的每一个。 - petecarapetyan
显示剩余9条评论

1

唯一的解决方案是先使用HTTPS,然后再切换到SSL。

git remote set-url origin [HTTPS: https://github.com/username/your-repo-name]
git remote set-url origin [SSH: git@github.com:username/your-repo-name]

请将VonC的答案标记为正确答案。谢谢。 - Aquarelle
我赞同这个答案--VonC是正确的,但在我遵循了这两个步骤之后,问题才得到解决。 - ConcernedHobbit

0
我在多个版本的Windows上都遇到了这个问题。这只发生在我的笔记本电脑上,而且是通过WiFi连接。在尝试了stackoverflow上的每个命令行解决方案之后,我找到了一个有效的解决方法,那就是找出你的无线网卡型号,并下载最新的驱动程序。在尝试之前,先卸载设备并删除原始驱动程序。
祝你好运!

0
这是因为我分支出来的远程Github分支被删除了,并且相应的拉取请求已经合并到了main分支并关闭了。
通过在main上进行变基并进行另一次git push来解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接