zoukankan      html  css  js  c++  java
  • 给 Git 仓库瘦身,删除大文件的版本控制

    Git仓库用久后;或者.gitignore文件一开始没有设置好,没有忽略掉大文件(比如: zip,sql,dll… 等二进制文件),会把git仓库体积撑的很大,可达好几个G。这些大文件有些是没必要放进来的, 完全可以删除掉来精简仓库体积。

    下面是解决方法步骤:

    1. 查看存储库中的大文件

    git rev-list --objects --all | grep -E `git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}' | sed ':a;N;$!ba;s/
    /|/g'`
    

    或者

    git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk '{print$1}')"
    

    2. 改写历史,去除大文件

    进入项目根目录(.git 文件夹所在的目录)

    $ cd project
    

    从提交历史中删除所有的zip文件

    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.zip' --prune-empty --tag-name-filter cat -- --all
    

    从提交历史中删除uploads文件夹中的所有文件

    git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch uploads/' --prune-empty --tag-name-filter cat -- --all
    

    清除残余的 objects并通过GC回收空间

    $ rm -rf .git/refs/original/ 
    $ git reflog expire --expire=now --all
    $ git gc --prune=now
    $ git gc --aggressive --prune=now
    

    强制推送覆盖远端仓库

    git push origin --tags --force
    git push origin --all --force
    

    查看瘦身后的体积

    $ du .git -lsh 
    
  • 相关阅读:
    c++ 单例模式
    c++ 时间格式化
    c++ read
    c++ 时间与字符串转换
    c++ switch case
    HIVE Transform using 用法
    python安装模块
    pip install psutil出错-You are using pip version 10.0.1, however version 18.0 is available.
    centos下安装Loadrunner
    svn-checkout后,循环遍历查找包含某字符串的文件
  • 原文地址:https://www.cnblogs.com/Run2948/p/Slimming_Git_Repository.html
Copyright © 2011-2022 走看看