Git删除大文件历史记录

Git删除大文件历史记录

  1. git clone 仓库地址

  2. 查看大文件并排序

    git rev-list --objects --all |grep $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -1|awk '{print $1}')
    
  3. 删除大文件

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

    –ignore-unmatch后面写你第2步看到的大文件的路径

    注意:若有多个分支,可能要切换后再删除;

    注意:使用步骤2)进行验证,是否真的删除了,删除后,将不返回任何信息。

  4. 清理历史记录

    rm -rf refs/original/
    
    git reflog expire --expire=now --all
    
    git gc --prune=now
    
    git gc --aggressive --prune=now
    
  5. 强行推到远端

    注意这里是关键,网上所有的教程都是用的

    git push --force --all
    

    之类的命令,这种命令是错误的,–all无法推送所有的引用而–mirror可以

    要使用如下命令:

    git push --force --mirror
    

    大功告成!

你可能感兴趣的:(笔记,git)