Git repo-clean 一种 Git 大仓库文件清理工具
安装:
二进制包安装:
源码编译安装:
1 | $ git clone https://gitee.com/oschina/git-repo-clean |
用法:
git repo-clean [选项]
**** **** **** **** **** * 重要! * **** **** **** ****
*** 该历史重写过程是不可逆的破坏性的操作 ***
*** 请在做任何操作之前先备份您的仓库数据 ***
git repo-clean 是一款扫描 Git 仓库元数据,然后根据指定的文件类型以及大小来过滤出文件,并且从仓库中完全删除掉这些指定文件的工具,它将重写跟删除的文件相关的提交以及之后的提交的历史。
选项:
1 | -v, --verbose 显示处理的详细过程 |
这些选项主要可以给用户提供两种使用方法:交互式、命令行式
交互式用法:
直接执行 git repo-clean 或 git repo-clean -i 进入交互式界面程序与用户通过问答的方式进行交互,使得用户在处理文件筛选、备份、删除、历史重写的整个过程变得更加简单。
命令行式用法:
用户可以在命令行中通过指定各种选项的参数,来实现功能,例如:
为了只扫描仓库中文件类型为 tar.gz,且大小超过 1G 的文件,执行:git repo-clean --scan --limit=1G --type=tar.gz
当需要删除指定文件时,需要加上 –delete 选项,执行:git repo-clean --scan --limit=1G --type=tar.gz --delete
如果相同文件存在多个分支中,或者发现前一次删除之后,相同的文件仍然存在,则可以使用 –branch 选项,从所有分支删除,执行:git repo-clean --scan --limit=1G --type=tar.gz --delete --branch=all
可以通过 –number 选项,控制扫描结果的数量,默认只扫描出前 3 个最大文件:git repo-clean --scan --limit=1G --type=tar.gz --delete --number=3
如果你想用
Git LFS管理大文件,可以使用 –lfs 选项将大文件转换为 LFS 指针文件这个操作必须在扫描模式下进行,必须指定文件类型,即必须有 –scan, –type 参数此时 –number 参数无效:git repo-clean --scan --type=so --lfs --delete在非扫描模式下,即不指定 –scan 参数,可以快速进行以下操作:
删除某些已知的文件,不必扫描仓库,使用 –file 选项直接指定文件:
git repo-clean --file file1 --file file2 --delete或者,批量删除某个目录下所有的文件:
git repo-clean --file dir/ --delete又或者,批量删除某种类型文件:
git repo-clean --type="png" --delete再或者,批量删除超过某个大小的所有文件:
git repo-clean --limit=10M --delete
