改造背景:由于项目使用的是vue+webpack,而且之前的上线流程 并没有接入交付系统或jenkins,从而导致git提交时无法忽略dist,造成仓库日渐庞大
操作提醒:以下操作只针对于当前所在的一个分支,也就是你要推送哪个分支,就在哪个分支下执行全流程,注意要保证本地执行操作前已经拉取过最新代码,否则可能造成commit丢失
改造流程:
-
新建一个空仓库(包含README.md),可以直接拿来用
-
本地原项目的目录下执行命令更换远程地址
git remote set-url origin 【新仓库的远程仓库地址]git remote -v -
删除远程dist/.的提交差异 (此操作指针对于当前分支 && dist/)
git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch dist/.' --tag-name-filter cat -- --all -
删除指向旧提交的指针
rm -rf .git/refs/original/ -
让历史记录全部过期
git reflog expire --expire=now --all -
对仓库进行打包操作
git repack -A -d -
对仓库gc操作,删除刚才repack的垃圾文件,此时仓库大小明显得到优化
git gc --aggressive --prune=now -
推送远程(只会推当前分支,其他分支的话需要再次执行全流程操作)
git push --force -
查看远程新仓库是否有了刚才推送的分支
-
执行完需要推送的分支后,修改
.gitignore文件,并更新至远程新仓库 -
就是说每个使用该仓库的人员,都有必要重新git clone,因为需要保证
.gitignore文件忽略的准确性
改造前后大小对比:1GB ==> 30MB
主分支和commit记录都还在: