Git删除已提交的文件

昨天通过Git Bash提交代码的时候遇到了由于单个文件大小超过100M,导致代码上传失败的问题。考虑到那个大文件是用于训练模型的数据集,并没有进行版本控制的必要,为了方便以后能快速推送和拉取代码,决定设置Git忽略该文件并且从提交记录中删除它。本文记录了Git删除已提交的文件的整个过程,主要内容包括定位文件和删除文件。

定位文件

  1. 通过git rev-list命令确定需要删除的文件

    git rev-list --objects --all
    
    6e218fcb1ce2dea99b0b11c4b2622e374c346d92 data/unaligned/dev
    6cefb1936b02424bfeff514dbeee0c8e18f78fd4 data/unaligned/test
    adcdc9fd6b3171ef173e43a2dde9d3502b59c504 data/unaligned/train
  2. 可以配合使用git verify-packgit rev-list找出仓库中的大文件

    git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
    
    git rev-list --objects --all | grep adcdc9fd6b3171ef173e43a2dde9d3502b59c504
    
    adcdc9fd6b3171ef173e43a2dde9d3502b59c504 data/unaligned/train

删除文件

  1. 通过git filter-branch命令删除文件

    git filter-branch --index-filter 'git rm --cached --ignore-unmatch data/unaligned/train' -- --all
  2. 主动回收资源、清理仓库

    Git仓库历史有个缓存期,如果不主动回收、清理仓库历史,一般的这些记录还会保存一段时间。通过以下命令可以主动回收资源:

    rm -rf .git/refs/original/
    rm -rf .git/logs/ git gc
    git prune

参考链接

最新文章

  1. Laravel五大功能之Eloquent关系模式
  2. jenkins 入门教程(上)
  3. 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目
  4. php的session_start
  5. 剑指offer--面试题17
  6. 有关<action android:name="android.intent.action.DELETE" />
  7. Windows下通过脚本快速修改IP地址
  8. 关于 zend studio 中有些php 内置函数没有提示,或是有‘小黄色感叹号’
  9. 网络数据(socket)传输总结
  10. zoom:1-hasLayout
  11. 【G】开源的分布式部署解决方案文档 - 部署Console & 控制负载均衡 & 跳转持续集成控制台
  12. 中国地图插件世界地图||jQuery矢量SVG地图插件JVectorMap
  13. 转:springmvc常用注解标签详解
  14. junit-test
  15. FutureTask demo
  16. ASP.NET开发总结
  17. activity 的跳转
  18. Oracle EBS OM 已存在的OM订单增加物料
  19. r语言 列出所有变量
  20. null类型

热门文章

  1. [SPDK/NVMe存储技术分析]003 - NVMeDirect论文
  2. 我写的 Python 代码,同事都说好
  3. 领域驱动模型DDD(一)——服务拆分策略
  4. webapi_2 今天全是大经典案例
  5. Python执行机制
  6. ubuntu16.04启动ssh服务
  7. espnet中的transformer和LSTM语言模型对比实验
  8. 99%的人都搞错了的java方法区存储内容,通过可视化工具HSDB和代码示例一次就弄明白了
  9. OpenSSL实现了5种信息摘要算法有哪些?
  10. Spring支持的事务管理类型?