zoukankan      html  css  js  c++  java
  • 彻底删除git中的较大文件(包括历史提交记录)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/HappyRocking/article/details/89313501

    场景

    适用于从一个git项目中,将体积较大的资源彻底从git中删除,包括历史提交记录。

    如果仅仅在目录中删除一个文件是不够的,只要在提交记录中有这个文件,那么 .git 中就会有这个文件的信息。

    用 filter-branch 可以强制修改提交信息,将某个文件的历史提交痕迹也抹去,就像从来没有过这个文件一样。

    做法

    0、确保本地仓库是最新版本。

    1、在项目根目录下运行

    git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10

    列出所有仓库中的对象(包括SHA值、大小、路径等),并按照大小降序排列,列出TOP 10。

    $ git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10
    100644 blob 71ac1de8ee83566cca68f69d54acd82b9abf607d 7701044    "attr_matching/346240207346263250346226207344273266Win3462162223452722171-54000.xlsx"
    100644 blob d610f01bc315becaaa1c6d04772689d80ad4d010 7532106    "attr_matching/346240207346263250346226207344273266Win3462162223452722171-58000.xlsx"
    100644 blob 72b8fd2eeb1c951a7f680e6f4031fa57d643ebe1 5717635    personal_label_project/personal_label_ocr/result/matrix.csv
    100644 blob 89363c480afb229b5df4e2f6a6a951fdebca5ce2 5501428    cloth_attribute_classification/nohup_1103.out
    100644 blob 7cdba6a4e584a49dcab693111a90f2bdb0030a3c 5392316    sheos_category_classification/nohup_gpu_category_33_0.out
    100644 blob 84149a46904f87495df4896698ca5dd6fb53bdf3 5226094    cloth_attribute_classification/nohup_1105.out
    100644 blob c77db27ae9fbb5450586daa3c9622766d7a4a9bc 5151535    attr_matching/OCR_result_correct.txt
    100644 blob 58e4647427c443a44fbc66d584f6bda21b7c9036 2785190    image_check/out_tmp/nohup_5w_test_sheos.out
    100644 blob 58e4647427c443a44fbc66d584f6bda21b7c9036 2785190    image_check/out_tmp/nohup_50000_sheos.out
    100644 blob 58e4647427c443a44fbc66d584f6bda21b7c9036 2785190    image_check/nohup_5w.out
    

    2、根据最大文件的路径 {filepath},修改此文件的commit历史:

    git filter-branch --tree-filter "rm -f {filepath}" -- --all

    3、强制提交到远程分支:

    git push -f --all

    4、完成。可以重新下载项目,列出所有仓库中的对象,看是否还存在刚刚删除的文件。

     个人保存的命令--2019/8/29

    git filter-branch --tree-filter "rm -f dousnl-web/dousnl-web-protal/target/dousnl-parent.war" -- --all


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


    git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch dousnl-web/dousnl-web-protal/target/dousnl-parent.war' --prune-empty --tag-name-filter cat -- --all

  • 相关阅读:
    centos crash debug
    go get Unknown SSL protocol error in connection to gopkg.in
    Tensorflow serving with Kubernetes
    Spring 集成 Swagger UI
    Docker Registry V2 Garbage Collection
    Docker Registry V2 with Nginx
    Zabbix磁盘性能监控
    Zabbix CPU utilization监控参数
    Windows挂载Gluster复制卷
    Redis持久化存储(三)
  • 原文地址:https://www.cnblogs.com/dousnl/p/11428285.html
Copyright © 2011-2022 走看看