Jupyter AI

25 如何使用脚本从 Git 历史记录中删除大文件集

📅 发表日期: 2025年1月4日

分类: 🌲Git 入门

👁️阅读: --

如何使用脚本从 Git 历史记录中删除大文件

在 Git 项目开发过程中,有时可能因为误操作将不必要的大文件提交到仓库中,这些大文件会导致仓库体积增大,甚至影响性能。本篇文章将介绍一个 Bash 脚本,帮助你轻松从 Git 历史记录中完全删除大文件。

脚本功能
  • 批量删除: 支持删除多个大文件。
  • 彻底清理: 包括历史记录和引用日志中的残留。
  • 仓库优化: 使用垃圾回收压缩数据,降低仓库大小。
脚本代码

替换word-attack为你的删除大文件文件夹路径

#!/bin/bash
# List of large files to remove
files=("word-attack")

for file in "${files[@]}"; do
  git filter-branch --tree-filter "rm -f $file" HEAD
done

# Clean up
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now --aggressive
使用步骤
  1. 创建脚本文件:

    • 新建文件 remove_large_files.sh,将上述代码复制粘贴进去。
  2. 赋予执行权限:

    chmod +x remove_large_files.sh
    
  3. 运行脚本:

    ./remove_large_files.sh
    
注意事项
  1. 备份仓库: 执行 git filter-branch 操作前,建议备份整个仓库,以防误操作导致数据丢失。
  2. 影响范围: 该脚本会修改所有历史记录,修改后的仓库需强制推送(git push --force)到远程。
  3. 避免协作冲突: 删除历史后,其他开发者需重新克隆仓库以避免冲突。

通过上述脚本,你可以轻松高效地清理 Git 历史记录中的大文件,为项目瘦身!