.git文件过大,github仓库瘦身

前几天发现github的仓库非常庞大,down下来有近一个G。虽然把大文件删除了,但是.git文件夹还是占用很大空间,查询资料发现是因为有些文件虽然被删除了,但是github还会保留它的历史日志。所以采用下面的方式将大文件彻底删除。

PS:如果不想费事又想clone的时候快一点,只需要在命令行后面加--depth=1,就会只clone最后一次commit的内容。例如

git clone https://github.com/Wuchenwcf/MyCode.git --depth==1

1.识别出最大的三个文件

git verify-pack -v .git/objects/pack/pack-8eaeb...9e.idx | sort -k 3 -n | tail -3

红色部分对应你github仓库目录下的相应位置,笔者的是

 

执行结果如下:

 

$git verify-pack -v .git/objects/pack/pack-44647d872a2ee43463eda7c6f620b9cd88a79a9a.idx | sort -k 3 -n | tail -3

296169a146c50dbc100a5d0ee5be87a45cd7cbb3 blob   50296832 49474116 291684796

aae2c1bf6109f2729502349722b4c3402626d755 blob   77762481 77330392 78759794

35047899fd3b0dd637b0da2086e7a70fe27b1ccb blob   100534272 100014418 191670176

2、查询大文件的文件名

git rev-list --objects --all | grep 35047899fd3b0dd637b0da2086e7a70fe27b1ccb

红色部分对应上一步的绿色部分

执行结果如下:

 

 

git rev-list --objects --all | grep 35047899fd3b0dd637b0da2086e7a70fe27b1ccb

35047899fd3b0dd637b0da2086e7a70fe27b1ccb C#/道路车流量统计1/Matlab/HeadlightTracking/for_redistribution/MyAppInstaller_web.exe

3、将该文件从历史记录的所有 tree 中移除

git log --pretty=oneline --branches --  C#/道路车流量统计1/Matlab/HeadlightTracking/for_redistribution/MyAppInstaller_web.exe

红色部分对应上一步的绿色部分

执行结果如下

 

git log --pretty=oneline --branches --  C#/道路车流量统计1/Matlab/HeadlightTracking/for_redistribution/MyAppInstaller_web.exe

504a94cc041285f5d9c3d9e40f0ffa3c02e1a07d 删除没用的代码

a821b64402c37f7efa01b6dca904ce6d8bdefa77 车辆检测

 

4、用 filter-branch 命令重写所有 commit 才能将文件从 Git 历史中完全移除。

git filter-branch --index-filter 'git rm --cached --ignore-unmatch   C#/道路车流量统计1/Matlab/HeadlightTracking/for_redistribution/MyAppInstaller_web.exe'

 

红色部分对应第二步的绿色部分,注意不要忘记符号

5、依次执行以下命令,便可删除

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git fsck --full --unreachable

git repack -A -d

git gc --aggressive --prune=now

git push --force

 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值