Git仓库体积太大如何优化

1,005 阅读1分钟

改造背景:由于项目使用的是vue+webpack,而且之前的上线流程 并没有接入交付系统或jenkins,从而导致git提交时无法忽略dist,造成仓库日渐庞大

操作提醒:以下操作只针对于当前所在的一个分支,也就是你要推送哪个分支,就在哪个分支下执行全流程,注意要保证本地执行操作前已经拉取过最新代码,否则可能造成commit丢失

改造流程:

  1. 新建一个空仓库(包含README.md),可以直接拿来用

  2. 本地原项目的目录下执行命令更换远程地址

    git remote set-url origin 【新仓库的远程仓库地址]

    git remote -v

  3. 删除远程dist/.的提交差异 (此操作指针对于当前分支 && dist/)

    git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch dist/.' --tag-name-filter cat -- --all

  4. 删除指向旧提交的指针

    rm -rf .git/refs/original/

  5. 让历史记录全部过期

    git reflog expire --expire=now --all

  6. 对仓库进行打包操作

    git repack -A -d

  7. 对仓库gc操作,删除刚才repack的垃圾文件,此时仓库大小明显得到优化

    git gc --aggressive --prune=now

  8. 推送远程(只会推当前分支,其他分支的话需要再次执行全流程操作)

    git push --force

  9. 查看远程新仓库是否有了刚才推送的分支

  10. 执行完需要推送的分支后,修改.gitignore文件,并更新至远程新仓库

  11. 就是说每个使用该仓库的人员,都有必要重新git clone,因为需要保证.gitignore文件忽略的准确性

改造前后大小对比:1GB ==> 30MB

image.png

image.png

主分支和commit记录都还在:

image.png