Git不小心添加了大文件 如何移除减少git包的体积

问题

最新有个项目在git提交时忘了在.gitignore添加忽略了 导致不小心提交了一个大文件进去

当得知这一操作后 立马使用git reset Head^对提交进行回退 并且使用git rm --cache来删除这个大文件缓存 可问题是.git包体积依然很大 说明这个文件还未彻底清除

如果想清除该大文件 可以按照以下操作

解决步骤

  1. 使用git filter-branch命令:

    1
    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path/to/your/large/file' --prune-empty --tag-name-filter cat -- --all

    请将path/to/your/large/file替换为实际文件的路径 这个命令会重新写入所有的历史记录,将指定的大文件从中移除

  2. 清除reflog记录:

    1
    git reflog expire --expire=now --all

    上面的指令会清除所有的reflog记录, 如果我们只想清除误添加大文件的那个记录可以使用以下指令:

    1
    git reflog delete HEAD@{n}
  3. 垃圾回收:

    1
    git gc --prune=now

    这个命令将清除不再需要的对象,并压缩.git文件

  4. 使用bfg工具(如果需要)
    如果上述方法无效,你可以尝试使用bfg工具。首先,安装bfg

    1
    brew install bfg # 如果你使用的是Mac,并且安装了Homebrew

    然后,在你的项目目录下运行以下命令来移除大文件:

    1
    bfg --delete-files path/to/your/large/file

    最后,执行垃圾回收命令来清除无用的数据:

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

    bfg工具比filter-branch更快,并且更容易使用。

在执行这些操作之前,请确保你已经备份了重要的数据,以防万一

另辟蹊径

当我们将commit进行回退然后提交到远程仓库后, 其实远程仓库的git包是不带大文件的 也仅仅是本地.git还存在缓存垃圾

根据此原理 我们可以重新clone一下项目代码到独立的目录中 让后将.git进行替换即可

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%