美文网首页
.git项目瘦身

.git项目瘦身

作者: andycheng | 来源:发表于2024-06-13 09:34 被阅读0次

有一个项目用git管理,因为误提交了一些大文件,java_pid*.hprof,及时发现删除了,但是导致.git目录大小1.1G,于是决定对其瘦身,瘦身是bfg方法,网上找开源了一个Java写的工具类,可以快速瘦身,具体参考BFG Repo-Cleaner by rtyley

git clone --mirror url

首先新建一个目录dir,进入目录执行,git clone --mirror ssh://git@aa:bb/cc/project.git,一直报错

Cloning into bare repository 'project.git'...
git@aa: Permission denied (publickey).
fatal: Could not read from remote repository.

电脑一直用的sourcetree,使用ssh助手(ssh-agent)加载配置的ssh key,一直可以,但是在git bash不行,于是重新生成配置ssh key到gitlab,还是不行,网上找到了解决方法:
在git bash执行:

ssh-agent.exe bash

加载配置到gitlab的ssh key:

ssh-add  /c/Users/cc/.ssh/240613_id_rsa

再执行

git clone --mirror ssh://git@aa:bb/cc/project.git
Cloning into bare repository 'project.git'...
remote:                                                                         
remote:              
Enumerating objects: 111291, done.
remote:              
remote:              
remote: Compressing objects: 100% (40643/40643), done.
kex protocol error: type 7 seq 714141), 1012.50 MiB | 10.96 MiB/s
Receiving objects: 100% (111291/111291), 1.06 GiB | 10.92 remote: Total 111291 (delta 50796), reused 111291 (delta 50796)
MiB/s, done.
Resolving deltas: 100% (50796/50796), done.

执行成功:
之后就是按照:BFG Repo-Cleaner by rtyley 来执行,

启动bfg-1.14.0.jar

首先把bfg.jar下载下来,放到project.git同级目录,执行

java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M project.git
…
…
BFG run is complete! When ready, run: git reflog expire --expire=now --all && git gc --prune=now --aggressive

这个是危险操作,具体按照上面的链接来操作,操作之前,最好进行备份,我是用gitlab先fork了project.git,然后才进行操作,原项目没有动,当做备份;
这个语句是找出超过100M的文件,进行删除,执行成功,提示你在git客户端执行另外一个方法,

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

执行完之后,执行

git push

执行完之后,重新拉取项目,就可以看到.git目录减少到了MB级别。

ONE MORE THING

最新的gitlab还支持其他方法,使用gitlab的同学,可以在这个位置找到操作方法
{url}/help/user/project/repository/reducing_the_repo_size_using_git.md

image.png
image.png

参考

Git之深入解析如何解决.git目录过大的问题-云社区-华为云 (huaweicloud.com)

相关文章

网友评论

      本文标题:.git项目瘦身

      本文链接:https://www.haomeiwen.com/subject/dqonqjtx.html