Github - 读取边带数据包时意外断开连接

Grz*_*rzz 25 javascript github reactjs

我有一个很有趣的问题。我尝试通过 bash 将一些项目发送到 repo,最近发送时出现问题。

Enumerating objects: 27, done. Counting objects: 100% (27/27), done. Delta compression using up to 16 threads Compressing objects: 100% (24/24), done. Writing objects: 100% (25/25), 187.79 KiB | 9.39 MiB/s, done. Total 25 (delta 1), reused 0 (delta 0), pack-reused 0 send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly

有趣的是,我可以提前 10 分钟发送它,没有任何问题。

我尝试获取新的 repo,创建新文件,重新安装 git,git config --global http.postBuffer 524288000还有更大的数字,还有 https.postBuffer 等等。也安装桌面版同样的问题进来。

我遇到的问题主要是 React 应用程序。

有人知道解决方案吗?会出什么问题?

Cod*_*ker 90

可能是你的网络问题。如果网络太慢,则可能会意外断开连接。

如果您的网络状况良好并且仍然收到此消息,则可能是您的帖子缓冲区存在问题。使用此命令将其增加(例如)到 150 MiB:

git config --global http.postBuffer 157286400
Run Code Online (Sandbox Code Playgroud)

根据http.postBuffer 的 git-config 文档

将数据 POST 到远程系统时,智能 HTTP 传输使用的缓冲区的最大大小(以字节为单位)。对于大于此缓冲区大小的请求,将使用 HTTP/1.1 和 Transfer-Encoding: chunked 来避免在本地创建大量包文件。默认值为 1 MiB,足以满足大多数请求。

请注意,提高此限制仅对禁用分块传输编码有效,因此仅应在远程服务器或代理仅支持 HTTP/1.0 或不符合 HTTP 标准的情况下使用。一般来说,提高这个值并不是大多数推送问题的有效解决方案,但会显着增加内存消耗,因为即使是小推送也会分配整个缓冲区。

因此,这只是服务器出现问题时的缓解措施。这很可能无法解决 GitHub 或 GitLab.com 的推送问题。

  • 不能为我解决问题。对于这应该产生什么影响以及为什么是这个数字有什么评论吗? (9认同)
  • 是的,具有如此晦涩而具体的参数的命令应该被解释和理解。 (3认同)
  • 引用的文字说“这通常不是一个有效的解决方案”,但是我在推送时遇到了四次问题(大......应该使用`git-lfs`代替,但现在太晚了)这个修复的存储库它 (2认同)
  • 就我而言,我有太多图像,必须推送到存储库。增加缓冲区大小对我有用。 (2认同)

vai*_*ind 60

以上这些都不适合我,git config --global pack.window 1确实如此。

  • 有关其作用,请参阅 https://git-scm.com/docs/git-pack-objects,特别是 --window 参数:“对象首先按类型、大小和可选名称进行内部排序,并与其他对象进行比较--window 中的对象来查看使用增量压缩是否可以节省空间。” 因此,将窗口设置为 1 可有效禁用增量压缩(增量压缩意味着仅存储对象之间的差异,以在推送提交时节省空间) (9认同)

cxx*_*xxl 40

我有同样的问题。我有一个包含 20000 个文件的存储库,整个存储库大小约为 5 GB,有些文件大小为 10 MB。我可以毫无问题地提交到存储库,并且可以毫无问题地克隆(尽管这需要一段时间)。然而,每次我把这个仓库拉到我的机器上时,我都会得到

\n
remote: Enumerating objects: 1359, done.\nremote: Counting objects: 100% (1359/1359), done.\nremote: Compressing objects: 100% (691/691), done.\nremote: Total 1221 (delta 530), reused 1221 (delta 530), pack-reused 0\nfetch-pack: unexpected disconnect while reading sideband packet\nfatal: early EOF\nfatal: fetch-pack: invalid index-pack output\n
Run Code Online (Sandbox Code Playgroud)\n

最终有帮助的是这个技巧。转到您的用户目录并编辑.git/config并添加:

\n
[core] \n    packedGitLimit = 512m \n    packedGitWindowSize = 512m \n[pack] \n    deltaCacheSize = 2047m \n    packSizeLimit = 2047m \n    windowMemory = 2047m\n
Run Code Online (Sandbox Code Playgroud)\n

瞧\xc3\xa1。不再有错误。

\n

  • 我必须将packedGitLimit、packedGitWindowSize 增加到1024m。(作为参考,我没有任何大文件,但有很多小文件。) (2认同)
  • 这对我有用,但只有在断开我的 VPN 后才有效! (2认同)

vis*_*uki 35

git config --global http.version HTTP/1.1

为我解决了问题。我之前无法在多个不同的 github 存储库中推送大量提交。


Moh*_*lal 17

连接、VPN、防病毒、防火墙

\n

最可能的原因。特别是如果你的 git 是最新的(如果不是,你可以更新它)。

\n

首先要尝试的是检查您的连接是否稳定

\n

我的连接非常===> 等等使用VPN吗?

\n

=>禁用它。并尝试一下。(VPN 是造成此类问题的罪魁祸首)

\n

还是不行?==> 检查防病毒软件防火墙

\n
\n
    \n
  • 网络稳定。
  • \n
  • VPN VPN VPN => 大罪魁祸首
  • \n
  • 防火墙和防病毒软件
  • \n
  • git更新到最新的
  • \n
\n
\n

如果这不起作用,请参阅以下内容:

\n

VPNdynamic IP rotation是罪魁祸首

\n
    \n
  • 如果禁用 VPN 后一切正常。如果您仍然需要使用 VPN。尝试使用 astatic IP代替。主要是它很有意义。它正在工作。然后呃呃呃。有VPN IP rotation问题dynamic IP。(如果您切换到静态并且它适合您。请发表评论。以静态方式维持该状态。)

    \n
  • \n
  • 我领导的实验

    \n
      \n
    • 使用 a 克隆 git@github.com:microsoft/vscode.git 存储库,VPNstatic IP100kib/s 超额克隆(克隆时间超过 2 小时)。\n
        \n
      • 这个仓库太大了。如果使用aVPN和 a ,则克隆失败。dynamic IP
      • \n
      • 结果\n- 与\xe2\x9c\x85VPN一起正常工作static IP
      • \n
      \n
    • \n
    \n
  • \n
\n

Git 缓存、缓冲区和内存

\n

/sf/answers/2054872431/

\n

打开 git 全局配置:

\n
git config --global -e\n
Run Code Online (Sandbox Code Playgroud)\n

并添加这些条目:

\n
[core] \npackedGitLimit = 512m \npackedGitWindowSize = 512m \n[pack] \ndeltaCacheSize = 2047m \npackSizeLimit = 2047m \nwindowMemory = 2047m\n
Run Code Online (Sandbox Code Playgroud)\n

再次尝试克隆。

\n

如果这不起作用!=>

\n

您可以尝试部分获取方法并禁用压缩:

\n

/sf/answers/1562223561/

\n

一次一个命令

\n
[core] \npackedGitLimit = 512m \npackedGitWindowSize = 512m \n[pack] \ndeltaCacheSize = 2047m \npackSizeLimit = 2047m \nwindowMemory = 2047m\n
Run Code Online (Sandbox Code Playgroud)\n

更多详细信息请参见链接。

\n


And*_*Sco 12

首先,检查您的网络连接稳定性。

如果网络连接没有问题,请尝试其他解决方案;它可能有效:

在 Linux 上

在执行 Git 命令之前,在命令行中执行以下操作:

export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1
Run Code Online (Sandbox Code Playgroud)

在 Windows 上

在执行 Git 命令之前,在命令行中执行以下操作:

set GIT_TRACE_PACKET=1
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1
Run Code Online (Sandbox Code Playgroud)

此外:

git config --global core.compression 0
git clone --depth 1 <repo_URI>
# cd to your newly created directory
git fetch --unshallow 
git pull --all
Run Code Online (Sandbox Code Playgroud)

  • git config --global core.compression 0 有效 (8认同)
  • 要恢复此状态,“取消设置 GIT_TRACE_PACKET GIT_TRACE GIT_CURL_VERBOSE”对我有用。 (8认同)
  • 推送后,我开始遇到“发送包:读取边带数据包时意外断开”的情况。重复尝试会导致 CPU 利用率过高,最后就会超时。我设置了这三个变量,突然它就起作用了。这里可能发生了什么? (6认同)
  • 逆转这些更改的正确方法是什么?您能否解释一下导出 GIT_TRACE_PACKET=1 和其余的作用? (6认同)
  • 对于 PowerShell 用户:“$env:GIT_TRACE_PACKET=1”、“$env:GIT_TRACE=1”和“$env:GIT_CURL_VERBOSE=1”。 (4认同)
  • 如何撤销更改? (3认同)
  • PWSH: `$env:GIT_TRACE_PACKET=$null;$env:GIT_TRACE=$null;$env:GIT_CURL_VERBOSE=$null` (3认同)

Dav*_*omb 10

我不想相信它,但在 3 次克隆失败后,从 wifi 连接(在 Mac 上)切换到硬连线连接(在 Linux 上)使它第一次工作。不知道为什么!

https://serverfault.com/questions/1056419/git-wsl2-ssh-unexpected-disconnect-while-reading-sideband-packet/1060187#1060187


pau*_*eno 6

如果您使用 SSH URL,您可以尝试以下操作,它对我有两次遇到相同问题的效果:

  1. 切换到 HTTPS 源 URL:git remote set-url origin https://github.com/<your_repo>
  2. 做推动。现在应该不会失败。
  3. 切换回 SSH:git remote set-url origin git@github.com:<your_repo>

我仍然不确定问题的原因是什么。这只是一种解决方法。


Smi*_*ver 5

就我而言,当我尝试推送初始提交时,有一些文件大小超过 100MB。由于 GitHub 显然不允许这样做,因此您会收到错误“读取边带数据包时意外断开连接致命:远程端意外挂起”。

使用 git rm 还不够,我必须使用 git init、git add、git commit 和 git push 重新开始才能解决问题。


Meh*_*ide 5

在 Windows 11 上,我通过升级位于 C:\Windows\System32\OpenSSH 文件夹中的内置 OpenSSH 解决了这个问题。

您可以在此处下载最新的二进制文件: https ://github.com/PowerShell/Win32-OpenSSH/releases

请参阅发行说明中的​​#2012,它解决了该问题:

v9.2.2.0p1-Beta Latest
This is a beta-release (non-production ready)

This release includes:

Security Fixes:

Upgrade to LibreSSL 3.7.2. Please refer to https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.2-relnotes.txt
MSI: change inbound firewall rule that opens port 22 to apply to Private networks only
Non-Security Fixes:

Add U2F/Fido2 keys to the agent from other clients: #1961 - thanks @ddrown!
Fix output codepage after executing scp/sftp/ssh/ssh-keygen command: #2027 - thanks @kemaruya!
Fix early EOF termination when running git fetch over ssh: #2012 - thanks @cwgreene!
Revert mark-of-the-web for SCP/SFTP file downloads: #2029
Run Code Online (Sandbox Code Playgroud)

  • 这是 Windows 用户的答案,最简单的更新方法是“winget install Microsoft.OpenSSH.Beta” (2认同)

归档时间:

查看次数:

20258 次

最近记录:

4 年,6 月 前