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

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

如何从 Github Repo 历史记录中删除大文件 - Shell-Bash

在 Git 的版本控制中,如果您意外地提交了一个大文件,可能会显著增加仓库的大小并导致许多不必要的上传,下载和合并问题。实际上,GitHub 及许多 Git 托管平台都有大小限制。当您上传大文件时,它们可能会拒绝您的推送,并向您发出错误消息。

在这种情况下,您需要遵循以下步骤,以在您的 Repo 历史记录中完全删除大文件,以便能够为仓库节省磁盘空间并减轻数据传输和合并的压力。

步骤:
第一步:从您的 Repo 历史记录中使用 BFG Repo-Cleaner 删除大文件

BFG Repo-Cleaner 是一个专门用于删除大文件的 Git 子命令。使用该子命令,您可以轻松地扫描您的历史记录,查找并删除大小超过某个特定阈值(如 100 MB)的文件。

要使用 BFG Repo-Cleaner,请开启您的终端,并按照以下步骤执行:

# 安装 BFG Repo-Cleaner
$ brew install bfg

# 克隆您的 Repo 并使用 --mirror 参数克隆它的镜像版本
$ git clone --mirror https://github.com/user/repo.git

# 切换到您的 Repo 的镜像目录中
$ cd repo.git

# 运行 BFG Repo-Cleaner 子命令,并指定要删除的大文件大小的阈值
$ bfg --strip-blobs-bigger-than 100M

# 使用该命令,您将找出任何大小超过 100 MB 的文件,并将其删除
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive

# 在完成的 Repo 历史记录中,您将看不到大小超过 100 MB 的文件
第二步:强制 Git 推送删除的更改

大文件已经从您的 Repo 历史记录中删除,但是您的历史记录中仍然保留了这些大文件的有关信息。要永久删除它们,您需要将它们从你的远程 Github Repo 中强制推送掉。

# 用 git push 命令将更改推送回您的远程 Repo
$ git push origin --force --all

# 推送完毕后,您的远程 Repo 将不再保存过大文件的任何信息。

现在,您成功地从 Github Repo 历史记录中删除了大文件。这将使您的 Repo 变得更干净、更小,并让您在未来避免任何不必要的上传、下载及合并问题。