medias 目录下的视频文件太大,提交到git上时如何特殊配置?

medias 目录下的视频文件太大(如 >100MB),直接提交到 Git 会遇到以下问题:

  • GitHub/GitLab 等平台通常限制单文件 ≤100MB(GitHub 超过 50MB 就警告,100MB 拒绝推送);
  • 即使平台允许,大文件也会拖慢 clone/pull 速度,膨胀仓库历史;
  • Git 本身不适合存储二进制大文件(无法高效 diff)。

✅ 正确做法:使用 Git LFS(Large File Storage)

Git LFS 是官方推荐的解决方案,用指针文件代替真实大文件存入 Git 历史,真实文件存储在 LFS 服务器(GitHub/GitLab/Bitbucket 均原生支持)。


🔧 配置步骤(以 GitHub 为例)

1. 安装 Git LFS

  • 官网下载:https://git-lfs.com
  • 或命令行安装:
    # macOS
    brew install git-lfs
    
    # Windows (Scoop)
    scoop install git-lfs
    
    # Ubuntu/Debian
    sudo apt-get install git-lfs
    

2. 在仓库中初始化 LFS

cd your-repo
git lfs install          # 全局只需一次,仓库内可省略

3. 跟踪 medias 目录下所有视频文件

# 跟踪特定扩展名(推荐)
git lfs track "*.mp4"
git lfs track "*.mov"
git lfs track "*.avi"
git lfs track "medias/**"   # 或直接跟踪整个目录(谨慎)

# 查看 .gitattributes 是否生成
cat .gitattributes

✅ 推荐按扩展名跟踪,避免误跟踪非媒体文件。

.gitattributes 示例内容:

*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text

4. 正常添加、提交、推送

git add .gitattributes
git add medias/avc1_18s_moovback_MPEG-4.mp4
git commit -m "Add large video via LFS"
git push origin main

⚠️ 首次推送会上传大文件到 LFS 服务器,需联网且耗时较长。


📌 注意事项

问题 解决方案
已误提交大文件到 Git 历史 必须用 git filter-repo 彻底清除(否则 LFS 无效)
团队协作 所有成员需安装 Git LFS,否则会拉到指针文件(乱码)
LFS 存储配额 GitHub 免费账户有 1GB LFS 配额,超限需付费
不要跟踪整个目录 git lfs track "medias/**" 可能包含非大文件,建议按扩展名

🚫 如果你不想用 Git LFS(不推荐)

替代方案:

  1. 将视频存到外部存储(如 AWS S3、阿里云 OSS、Google Drive)
  2. 在代码中只保留下载链接或哈希校验文件
  3. 提供脚本自动下载:
    # download_media.sh
    wget https://your-bucket/video.mp4 -O medias/video.mp4
    

适用于开源项目(避免泄露私有链接)或超大文件(>2GB)。


🔁 如果已误提交大文件?必须清理!

如果视频已经提交到 Git 历史(即使后来删除),仍会存在于 .git 中。必须重写历史:

# 安装 git-filter-repo(比 BFG 更现代)
pip install git-filter-repo

# 删除 medias 目录所有文件的历史记录
git filter-repo --path medias/ --invert-paths

# 强制推送到远程(⚠️ 危险!确保团队知晓)
git push origin --force --all

💡 清理后再配置 LFS,否则新提交仍会叠加历史体积。


✅ 最佳实践总结

场景 推荐做法
新项目,要加视频 ✅ 立即配置 Git LFS,按扩展名跟踪
已有大文件在历史中 🔥 先用 git-filter-repo 清理,再设 LFS
视频 > 2GB 或太多 ☁️ 改用云存储 + 下载脚本
开源项目 🔗 提供公开下载链接,避免 LFS 配额耗尽

📦 示例:完整流程

# 1. 初始化 LFS
git lfs install

# 2. 跟踪视频格式
git lfs track "*.mp4"
git lfs track "*.mov"

# 3. 提交 .gitattributes
git add .gitattributes
git commit -m "Enable Git LFS for videos"

# 4. 添加视频并推送
git add medias/
git commit -m "Add sample videos"
git push origin main   # 首次会上传到 LFS

完成后,其他人 clone 时会自动下载真实文件(需安装 Git LFS)。

posted @ 2026-03-23 23:51  龙陌  阅读(1)  评论(0)    收藏  举报