• 删除git中无用的大文件


    推荐阅读:为什么你的 Git 仓库变得如此臃肿

    有时候我们不小心提交了一些大文件上去,后来删除了,但是已经于事无补了,整个git的提及已经蹭蹭上去了。

    这个时候怎么办呢?

    1. 查看有哪些大文件(top 5)

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

    2. git filter-branch

    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件名' --prune-empty --tag-name-filter cat -- --all

    git filter-branch --index-filter每个提交的文件都复制到索引(.git/index)中

    然后运行过滤器命令:git rm --cached --ignore-unmatch 文件名 ,让每个提交都删除掉“文件名”文件

    然后--prune-empty 把空的提交“修剪”掉

    然后--tag-name-filter cat 把每个tag保持原名字,指向修改后的对应提交

    最后-- --all 将所有ref(包括branch、tag)都执行上面的重写

    3. 删除缓存下来的ref和git操作记录

    git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
    git reflog expire --expire=now --all

    4. 垃圾回收

    上面2步把大文件的索引都切断了,这个时候进行垃圾回收,就可以很明显看到效果了

    git gc --prune=now

    5. 把.git里面的修改推上去

    这个时候普通的push是不行的,需要强推

    git push --force
  • 相关阅读:
    RHEL7.2安装及配置实验环境
    VMwareworkstation 12安装
    Iterator主要有三个方法:hasNext()、next()、remove()详解
    httpclient
    http接口测试——Jmeter接口测试实例讲解
    java获取Excel的导出
    java获取Excel的导入
    java的post请求
    java的get请求
    Python3 列表(List)基础
  • 原文地址:https://www.cnblogs.com/amiezhang/p/11337095.html
Copyright © 2020-2023  润新知