标签:text 退出 主服务器 占用 实验 ranch strong obj col
清理git提交记录并不能给“瘦身”
上周发现gitlab同步到线上的主服务器cpu和内存报警。
一查发现是隐藏目录 .git 过大导致的,导致每分钟同步卡死,
我其实有点怀疑是同步脚本中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 目录大小,大小没变,是不是很绝望~~~
为了不打击我经理的伟大构想,我就不拆穿这个残忍的真相了。。。
实际上问题最终解决还是重新做git目录,rm .git 删除项目关联,再git clone。对于这个 .git 随着提交不断庞大的问题,我觉得做好两点吧:
(1)运营发文章的时候不要上传过大的文件(超100M),不然同步到gitlab上,".git\objects\pack" 就会越来越大
(2)定时运行git gc 回收空间咯,例如每周一次这样
标签:text 退出 主服务器 占用 实验 ranch strong obj col
原文地址:https://www.cnblogs.com/windysai/p/14942390.html