zoukankan      html  css  js  c++  java
  • 清理git提交记录并不能达到真正硬盘“瘦身”

    清理git提交记录并不能给“瘦身”

      上周发现gitlab同步到线上的主服务器cpu和内存报警。

      我其实有点怀疑是同步脚本中git命令导致的,要不就是下面的同步命令(每1分钟跑一次);要不就是每5分钟去git目录跑一次的git status监控是否有未提交文件 。因为之前也时不时会出现cpu报警,这个罪魁祸首善待查证,先放一边。

    1 cd $git_home
    2 git fetch --all
    3 git reset --hard origin/master

      整个数据盘有100G,去除留给系统用的,实际上能用的有93G。然后du下.git 目录,当时占用59G。然后我用“git gc”去清理本地版本库。发现运行过程中 .git 目录随着命令运行,越来越大。当时根本不够空间让它运行完毕,然后我只能强制退出,挪走一部分文件,再运行。反反复复试了很多次,.git 目录就像无底洞一样,不断吞噬硬盘空间,直到膨胀到 78G。

      只能停掉所有定时脚本,然后跟经理研究下,怎么在不重做git的情况下(即rm 整个git目录,再git clone 拉代码),给它瘦身。

       

      当时我经理就觉得清掉2019年前的 git log 提交记录,是可以减少 .git 空间的。本来我们是打算删除老旧的提交记录,发现没找到合适的,所以决定测试一个完全清空提交记录的实验。

      然后他跟我在电脑进行测试,以下是我复原当时测试过程:

    参考文档:https://huochengyan.blog.csdn.net/article/details/107244931?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.nonecase

    1、gitlab新建一个项目:ljytest-20210629,把一个有提交记录的项目导进去

      共有809个提交记录

    2、把项目:ljytest-20210629拉到本地,方便查看git大小

    本地需要先给权限

     未运行清空提交记录时,查看.git 大小,为156MB

     

     git log也能查到记录

    3、运行清提交记录命令

    git checkout --orphan latest_branch
    git add -A
    git commit -am "commit mytest-202106292254"
    git branch -D master
    git branch -m master

    git push -f origin master 

     报错了,要gitlab页面上设置下,去除master分支上的项目保护,点击: Unprotect

     重新运行即可

    4、运行后的效果图

    这时候master分支上只有一个commit

    再看看 .git 目录大小,大小没变,是不是很绝望~~~

      为了不打击我经理的想法,我就不拆穿这个残忍的真相了。。。(其实想象下,就一堆字符记录,类比成一个写了很多内容的记事本,怎么大都不可能做到占用70+G的,而且这个项目提交记录实际上也就 3w 条不到,所以时候想想,从情况提交记录去释放空间是不太可取的)

      问题最终解决还是重新做git目录,rm .git 删除项目关联,再git clone 项目到服务器。

      对于这个 .git 随着提交不断庞大的问题,我觉得做好两点吧:

    (1)运营发文章的时候不要上传过大的文件(超100M),不然同步到gitlab上,".gitobjectspack" 就会越来越大

    (2)定时运行git gc 回收空间咯,例如定时脚本每周回收一次这样

  • 相关阅读:
    Macbook pro从购买服务器到搭建服务器环境(1)
    单元测试踩到的坑
    pycharm中连接公网IP方法
    C++混合编程之idlcpp教程Lua篇(5)
    C++混合编程之idlcpp教程Python篇(4)
    C++混合编程之idlcpp教程Lua篇(4)
    C++混合编程之idlcpp教程Python篇(3)
    C++混合编程之idlcpp教程Lua篇(3)
    C++混合编程之idlcpp教程Python篇(2)
    C++混合编程之idlcpp教程Lua篇(2)
  • 原文地址:https://www.cnblogs.com/windysai/p/14942390.html
Copyright © 2011-2022 走看看