之前,还没有实现自动化部署之前,前端同学都是把项目(VUE)打包到某个目录,然后push到仓库来实现代码管理。时间久了,仓库日志变的非常大,这种打包出来的中间文件删除,代码瘦身刻不容缓。严重影响了团队的开发效率。
发现了两个好用的工具git filter-repo和BFG Repo-Cleaner,点击查看官方文档
git filter-repo篇
清理之前,可以先起一个新仓库操作,同时同步本地的分支到远端新仓库(请确保本地的分支代码都是最新的,这很重要,不然会出现代码丢失的情况哦)
git push --all origin
假如你要清理public下的vue3和static文件,可以这样写成批处理文件demo.sh,这种模式是会把文件夹和里面的内容一起清除哦
#!/bin/bash
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch "public/vue3"' --prune-empty -- --all
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch "public/static"' --prune-empty -- --all
清除过程,时间可能会比较久。清除后,再删除本地的缓存的对象
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
最后,强制更新远程仓库:
git push origin --force --all
git push origin --force --tags
到最后最关键的一步了,其他同学一定重新git clone你远端的仓库地址,而不是直接换仓库地址哦,不然对方又把他本地的日志提交上来了。
BFG Repo-Cleaner篇
使用此工具,需要先安装java环境,至于怎么安装,这里就不说了,点击查看官方文档
git clone --mirror https://gitee.com/****/vue-all.git
java -jar bfg.jar --delete-folders vue3 vue-all.git
cd vue-all.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
我这里删除的是vue3文件夹下的日志,文件结构如下:
这种工具速度就快多了,但是他不会把文件夹和里面的内容删除,会保留最新的一次提交,而且也不能指定删除某个文件夹里面的东西。有利有弊,大家根据自身的情况选择吧。