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

    场景
    适用于从一个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。

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

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

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

    git push -f --all

    4、完成。可以重新下载项目,列出所有仓库中的对象,看是否还存在刚刚删除的文件。
    ————————————————
    版权声明:本文为CSDN博主「HappyRocking」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/HappyRocking/article/details/89313501

  • 相关阅读:
    如何编写测试用例
    bug的合规描述
    Linux常用命令学习
    测试用列设计
    软件质量管理
    测试的分类
    软件工程模型
    软件测试核心概念
    Thinking in C++ 第十三章 动态对象创建
    python urllib
  • 原文地址:https://www.cnblogs.com/xwgli/p/13268900.html
Copyright © 2011-2022 走看看