如何减小git项目的大小 -- 删除某个目录并删除git log信息



  • 从原有git repo中clone一份新的代码

    git clone YOUR_REPO
    cd YOUR_REPO
    

    YOUR_REPO为你的git目录或地址

    从所有的git commit中删除DIRECTORY_NAME目录,随后从refs中删除老的commits
    (如果删除多个目录,请重复执行下面的命令)

    git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch DIRECTORY_NAME/' --prune-empty --tag-name-filter cat -- --all
    
    git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
    

    确保所有老的refs被完全删除

    rm -Rf .git/logs .git/refs/original
    

    执行一次git gc, 删除没有refs的commit

    git gc --prune=all --aggressive
    

    可以发现现在这个目录下的.git大小小了很多


登录后回复
 

与 CodeNavigator -- Read source code on iPad 的连接断开,我们正在尝试重连,请耐心等待