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

如何配置本地Git仓库,阻止接收大文件以避免推送到GitHub出错?

配置Git拦截大文件提交

方法一:使用pre-commit钩子(通用方案)

Git的pre-commit钩子会在提交执行前触发,我们可以编写脚本检查暂存区文件的大小,超过阈值就阻止提交。

  1. 进入本地仓库的钩子目录:
cd .git/hooks
  1. 创建并赋予执行权限给pre-commit脚本:
touch pre-commit
chmod +x pre-commit
  1. 用编辑器打开pre-commit脚本,粘贴以下内容(可根据需求修改MAX_SIZE的值,单位为字节,示例为10MB):
#!/bin/sh

# 允许的最大文件大小(10MB = 10*1024*1024字节)
MAX_SIZE=10485760

# 遍历暂存区所有文件
git diff --cached --name-only | while read -r file; do
    # 获取文件大小(兼容Linux/macOS)
    FILE_SIZE=$(stat -c%s "$file" 2>/dev/null || stat -f%z "$file" 2>/dev/null)
    if [ -n "$FILE_SIZE" ] && [ "$FILE_SIZE" -gt "$MAX_SIZE" ]; then
        echo "ERROR: File $file exceeds $((MAX_SIZE/1024/1024))MB, cannot commit."
        exit 1
    fi
done

exit 0

保存退出后,后续任何超过大小限制的文件被暂存并尝试提交时,Git会直接拦截并提示错误。

方法二:结合Git LFS(适合需要跟踪大文件的场景)

如果你本来就用Git LFS管理大文件,可以通过配置自动拦截超过阈值的文件:

  1. 确保已安装Git LFS(未安装则执行git lfs install)

  2. 在仓库根目录的.gitattributes文件中添加规则(示例拦截zip/iso等大文件):

*.zip filter=lfs diff=lfs merge=lfs -text
*.iso filter=lfs diff=lfs merge=lfs -text
  1. 设置LFS的大小阈值(示例为10MB):
git config lfs.threshold 10m

这样超过10MB的匹配文件会被强制要求用LFS跟踪,否则无法提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:27:29