You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

POST git-receive-pack后git push挂起失败,如何配置正确的.gitignore?

问题根因

你之前配置的忽略规则不生效有两个核心原因:

  1. .gitignore仅对未被Git追踪的新增文件生效,你要忽略的大文件已经被加入了本地Git的历史提交记录,所以就算新增了忽略规则,历史中的大文件依然会被推送到远程仓库。
  2. 你编写的相对路径规则匹配范围错误,比如Models/*仅匹配仓库根目录下的Models文件夹,无法命中深层目录src/Video/Models/下的文件。

适配当前目录的.gitignore规则

以下规则可完全匹配你的目录结构,按需忽略指定文件:

# 忽略编辑器与运行环境缓存
.vscode/
.ipynb_checkpoints/
__pycache__/
*.pyc
*.pyo

# 全局忽略指定后缀大文件
*.png
*.mp4
*.h5

# 若需要保留部分指定后缀的文件,可添加!前缀反选,示例如下:
# !src/Game/ui/*.png

# 显式忽略大文件目录(可选,和上面全局后缀规则二选一即可,精准度更高)
# src/Video/Images/
# src/Video/Models/
# src/Video/Videos/

解决推送失败的操作步骤

配置完.gitignore后需要先清理本地Git历史中的大文件,再执行推送:

  1. 先提交当前所有修改,保证工作区干净:
git add .
git commit -m "update .gitignore rules"
  1. 清理历史提交中的大文件,可选用git filter-repo工具(Git 2.22及以上版本默认支持)执行以下命令:
# 移除所有历史提交中的h5文件
git filter-repo --path-glob '*.h5' --invert-paths
# 移除所有历史提交中的mp4文件
git filter-repo --path-glob '*.mp4' --invert-paths
# 移除所有历史提交中的png文件
git filter-repo --path-glob '*.png' --invert-paths

如果你习惯使用git filter-branch,也可以执行以下命令:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.mp4 *.h5 *.png' --prune-empty --tag-name-filter cat -- --all
  1. 清理完成后执行强制推送即可:
git push --force origin master

如果后续需要托管大体积的模型、视频文件,可以使用Git LFS管理。

内容的提问来源于stack exchange,提问作者romhayh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 13:24:04