美文网首页
.git文件夹瘦身

.git文件夹瘦身

作者: qlmmys | 来源:发表于2019-11-28 16:11 被阅读0次

由于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/

相关文章

  • .git文件夹瘦身

    由于git是分布式版本控制工具,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,可...

  • GIT命令

    git相关命令 git init:初始化一个git仓库会在当前文件夹下生成.git文件夹.git文件夹包括:git...

  • GIT 相关命令

    cd到项目文件夹 git init(创建 .git文件) git add .(添加项目文件夹的所有文件) git ...

  • 解决 git 无法添加新文件的问题

    git rm -rf --cached 文件夹路径/ git add 文件夹路径/

  • Git 远程仓库推送

    现在github上建立同名字文件夹 本地文件夹中 git init 将该文件夹设置为Git仓库 然后git add...

  • 常用命令

    1、初始化本地仓库 命令:git init效果:生成 .git文件夹,是隐藏目录 .git文件夹内容 2、git文...

  • 关于git

    git下载地址https://git-scm.com/本地创建文件夹,在文件夹内git clone 远程地址 查询...

  • 关于GIT

    git init初始化当前文件夹, 成为Git项目(新增一个.git的文件夹) 修改文件(变红色) git add...

  • git将代码上传至github

    1,创建本地仓库 首先,右击本地根目录文件夹,选择git bash,输入git init :会出现.git文件夹。...

  • GIT 的最基本操作

    git 的基本操作 新建一个文件夹,进入DOS界面先进入到文件夹的位置git init 该文件夹就会变成git的一...

网友评论

      本文标题:.git文件夹瘦身

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