Git推送GitHub仓库失败:连接重置与大文件超限问题求助
Git推送GitHub仓库WoundSize失败的解决方案
问题背景
- 运行环境:Windows 10,Git 2.34.1
- 异常现象:仅
WoundSize仓库的所有分支推送失败,其他仓库推送正常 - 初始错误:将
http.postBuffer调至1GB后,仍出现RPC连接重置错误,具体报错如下:
PS C:\path\ git push --set-upstream origin working_branch_app --verbose Pushing to https://github.com/Skymero/WoundSize.git Enumerating objects: 44290, done. Counting objects: 100% (44290/44290), done. Delta compression using up to 16 threads Compressing objects: 100% (35065/35065), done. Writing objects: 100% (44276/44276), 701.84 MiB | 124.79 MiB/s, done. Total 44276 (delta 9221), reused 38538 (delta 7978), pack-reused 0 (from 0) POST git-receive-pack (735935268 bytes) error: RPC failed; curl 55 Send failure: Connection was reset send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly Everything up-to-date
已尝试的操作:
- 检查GitHub状态页、网络连接,更换ISP
- 调整Git压缩配置、修改
postBuffer参数 - 切换HTTPS/SSH协议、重新关联远程仓库
- 调整Pack与Buffer配置,重新生成SSH密钥并确认连接成功
更新后的问题:大文件超限错误
调整配置后推送,出现GitHub大文件限制报错,具体信息如下:
PS C:\Users\USER\WoundSize\WoundSize> git push origin main --force Enumerating objects: 46274, done. Counting objects: 100% (46274/46274), done. Compressing objects: 100% (37861/37861), done. Writing objects: 100% (46274/46274), 871.98 MiB | 9.33 MiB/s, done. Total 46274 (delta 10659), reused 38766 (delta 7161), pack-reused 0 (from 0) remote: Resolving deltas: 100% (10659/10659), done. remote: warning: File .venv/Lib/site-packages/cv2/cv2.pyd is 71.00 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB remote: warning: File efficientnetb3_deepskin_semantic.zip is 73.94 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB remote: warning: File checkpoints/efficientnetb3_deepskin_semantic.h5 is 80.71 MB; this is larger than GitHub's recommended maximum file size of 50.00 M remote: warning: File .venv/Lib/site-packages/clang/native/libclang.dll is 80.10 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB remote: error: Trace: b881d3427e8c252783de34646ff6dc1637854a7dc76f497bebbb38bb8e2bebc3 remote: error: File .venv/Lib/site-packages/tensorflow/python/_pywrap_tensorflow_internal.pyd is 943.41 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage. To github.com:Skymero/WoundSize.git ! [remote rejected] main -> main (pre-receive hook declined) error: failed to push some refs to 'github.com:Skymero/WoundSize.git'
用户尝试删除本地仓库重新克隆、新建虚拟环境并安装依赖、添加相关文件到.gitignore,但问题依旧。
解决方案
1. 彻底清除Git历史中的大文件
.gitignore仅对未跟踪文件生效,已提交到历史的大文件必须从仓库历史中移除,推荐使用git filter-repo工具(替代老旧的filter-branch,更安全高效):
- 安装
git-filter-repo:Windows用户可通过Chocolatey执行choco install git-filter-repo,或直接下载官方脚本使用 - 列出仓库中所有大文件:
git rev-list --objects --all | grep -E "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -20 | awk '{print$1}')" - 删除指定超限文件(以最大的
_pywrap_tensorflow_internal.pyd为例):git filter-repo --path .venv/Lib/site-packages/tensorflow/python/_pywrap_tensorflow_internal.pyd --invert-paths - 对其他超限文件重复上述删除命令:
git filter-repo --path .venv/Lib/site-packages/cv2/cv2.pyd --invert-paths git filter-repo --path efficientnetb3_deepskin_semantic.zip --invert-paths git filter-repo --path checkpoints/efficientnetb3_deepskin_semantic.h5 --invert-paths git filter-repo --path .venv/Lib/site-packages/clang/native/libclang.dll --invert-paths - 强制推送清理后的仓库历史:
git push origin main --force
2. 配置.gitignore避免重复提交大文件
确保.gitignore包含以下规则,阻止虚拟环境和大文件被Git跟踪:
# 虚拟环境目录 .venv/ venv/ env/ # 大文件类型 *.h5 *.zip *.pyd *.dll # 模型 checkpoint 目录 checkpoints/
添加后提交规则:
git add .gitignore git commit -m "Add gitignore rules to exclude large files and venv" git push origin main
3. 可选:用Git LFS管理必要的大文件
如果部分大文件(如训练好的模型)需要保留在仓库中,可使用Git LFS:
- 安装Git LFS:
git lfs install - 跟踪指定类型的大文件:
git lfs track "*.h5" git lfs track "*.zip" git lfs track "*.pyd" git lfs track "*.dll" - 提交跟踪配置文件:
git add .gitattributes git commit -m "Track large files with Git LFS" git push origin main
注意事项
- 强制推送会覆盖远程仓库历史,需通知团队成员同步本地仓库:
git fetch origin && git reset --hard origin/main - 虚拟环境不应提交到Git,始终通过
requirements.txt管理依赖,其他开发者可执行pip install -r requirements.txt重建环境
内容的提问来源于stack exchange,提问作者Skymero
相关产品推荐
相关产品推荐

