📌  相关文章
📜  从 git 历史记录中删除大文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:49:17.415000             🧑  作者: Mango

从git历史记录中删除大文件 - Shell-Bash

在使用Git管理代码时,很有可能会向Git添加一些比较大的文件,这些文件不仅会占用大量磁盘空间,还会影响Git仓库的性能。如果需要删除这些大文件,可以使用Git提供的一些工具来实现。

Step 1: 查找大文件

在删除大文件之前,需要先确定哪些文件是比较大的。可以通过Git自带的命令来查找、列出大文件。

git rev-list --objects --all | grep -E "\<[0-9]{10,}\>"

该命令用于列出所有提交记录中包含文件的 SHA-1 值和文件名,并使用管道和 grep 命令过滤出文件大小大于 100 MB 的文件。

Step 2: 使用BFG进行大文件删除

BFG Repo-Cleaner 是一个专门用来帮助从Git历史记录中删除大文件的工具。

java -jar bfg.jar --delete-files file-to-delete.ext my-repo.git

该命令用于删除名为 file-to-delete.ext 的文件。

可以将其替换成实际需要删除的文件名。最后面是 my-repo.git,是Git仓库的地址。

Step 3: 强制提交

使用 BFG 删除了大文件之后,需要强制提交前一步操作所删除的内容:

git reflog expire --expire=now --all && git gc --prune=now --aggressive

这样可以将删除的文件从 Git 库中完全移除。

结论

使用这些命令可以从Git历史记录中删除大文件,从而可以节省磁盘空间,提高仓库性能。不过,在执行这些操作之前,一定要备份好你的 Git 仓库。