.git文件夹瘦身

由于git是分布式版本控制工具,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,可以离线工作而不依赖于中央仓库的特性,造成了这么一种现象:随着项目年龄的增长,项目在经历很多提交之后,.git文件会越来越大。尤其是当管理提交做大的文件时候(可能不小心提交上去了项目打好的war包、jar包、音频视频等),哪怕大文件后续已经被清理,但是git为了保证我们能随时能还原历史,依旧在日志中保存这些大文件的二进制流,加重.git负担。
本文模拟一位小伙伴,不小心提交了大文件(jar包)到仓库,后发现后亡羊补牢,删除并瘦身git的过程

我们有一个项目,test_git

项目初始大小只有180K


image.png

小伙伴提交失误,将jar包提交上去了。这里加入模拟大文件jar(8.5M),此时整个项目占用空间为8.6M


image.png

小伙伴一顿操作,git add,git commit,提交完毕,查看大小,此时占用空间达到了16M(文件本身有8M,提交记录的二进制流8M)


image.png

呀,不对劲,多提交了jar包,删除删除!!(删除了项目中的jar包)然后提交后,查看此时占用空间,依旧还有7.7M的空间占用(文件虽然删除了,但是git日志中依旧保存着)


image.png

可以想象一下,本来几百K文件,好端端的多了几M,甚至可能是几十几百M,将严重影响公司小伙伴同步公司中央仓库的效率。赶紧给git瘦个身吧

瘦身有很多种,这里使用比较简单且好用的工具bfg,首先下载jar包(详细使用和下载见文底备注)。
使用如下命令查询改项目历史中高于1M的历史记录
(--strip-blobs-bigger-than可以简化为-b)

  java -jar bfg-1.13.0.jar --strip-blobs-bigger-than 1M test_git

注意默认情况下。bfg是默认保护上次提交,所以上述命令查询结果并不包含上次提交。
结果:

image.png

查到一个8.5M的BigFile.jar

跟进实际情况,删除大文件。这里演示删除 *.jar

java -jar bfg-1.13.0.jar --delete-files "*.jar" --no-blob-protection test_git

上述命令的参数--no-blob-protection表明忽略保护

执行完后,进入项目目录,执行日志瘦身命令

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

查看当前空间占用,回到了188K,瞬间感觉很清爽了


image.png

瘦身有风险,使用请注意:

这种搜身方式只是在瘦身本地项目中的历史,瘦身完毕可使用

git push -f 

强制刷新瘦身版本到中央仓库。但是由于别的小伙伴本地的历史中依旧为未瘦身的文件,建议瘦身工作前,先让所有小伙伴提交所有代码,然后瘦身完毕后,重新clone新的项目

备注:
bfg官网:https://rtyley.github.io/bfg-repo-cleaner/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容