• git删除commit的历史大文件记录


    前言:

    git上有人提交了垃圾大文件,导致git拉取非常慢

    单纯的删除文件并提交git是没用的,因为提交记录会一直存在(也是git强大的一个地方,随时可以回滚代码)

    一、查一下当前git checkout出来的代码有没有大文件,有的话通过git rm删除再提交,不再多说

    二、主要是删除commit记录里的大文件

     
    第1步:确保本地仓库是最新版本。

    让大家把本地的代码都提交好,由某个人单独来操作。 


    第2步:在项目根目录下运行:

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

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

    第3步:删除本地commit记录

    git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch {path-to-your-remove-file}' --prune-empty --tag-name-filter cat -- --all

    在{path-to-your-remove-file}分次填入你需要删除的文件相对路径

    第4步:Git仓库历史更新

     Git仓库历史有个缓存期,如果不主动回收、清理仓库历史,一般的这些记录还会保存一段时间,以备你突然后悔了,没办法找回删掉的文件。那么怎么样才能主动回收资源能?就是通过以下命令:

    1. rm -rf .git/refs/original/
    2. git reflog expire --expire=now --all
    3. git gc --prune=now
    4. git gc --aggressive --prune=now

    执行以上命令,就会发现.git目录变小了。那么接下来只要把本地的记录,强制更新到远程仓库就行了。

    第5步:把本地的记录,强制更新到远程仓库

    git push origin master --force       #其中master为你要推送的分支

    重要提醒:
    在进行整理仓库前让大家都把本地需要提交的都Push上去,由某个人单独来执行整理仓库,整理完仓库以后通知其他同时重新拉取最新代码(因为有合并的话又会把commit记录再提交上去了)。

    不要通过git上传垃圾大文件,采用其他方式把临时文件上传到生产环境。

  • 相关阅读:
    VMware下安装、配置ubuntu虚拟系统
    Qt http
    Frida 安装使用
    AntV/G2 柱状图+折线图双轴图表
    C#正则将字符替换为其它,正则排除中文
    【2024官方文档版学习笔记】React 状态管理
    springboot vue婚纱摄影师作品展示网站系统javaweb项目
    速卖通选品推荐:韩国市场有哪些潜力机会商品?
    K8S之Job和CronJob控制器
    Spring Boot 实现动态数据源配置
  • 原文地址:https://blog.csdn.net/sway913/article/details/126117874