热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

git删除远程文件_利用bfg(取代gitfilterbranch)来删除你git中的大文件的方式

当你想要从你的gitrepo中删除大量文件做过滤的时候,你第一个会想到的是gitfilter-branch,但是这个使用不方便加上速度不快,幸好我们迎来

当你想要从你的git repo中删除大量文件做过滤的时候,你第一个会想到的是git filter-branch,但是这个使用不方便加上速度不快,幸好我们迎来了killer工具 - bfg. 他不会真正的把这些文件从最新的commit中删除。下面是具体步骤:

首先你需要以--mirror的方式来git clone你的仓库

git clone --mirror git://example.com/your-repo.git

447c77c34b85ee3c2937fab85fce33b8.png

删除超过大于10MB的文件

bfg --strip-blobs-bigger-than 10M your-repo.git

删除最大的文件(N个)

bfg --strip-biggest-blobs 100 your-repo.git

这个命令会删除你仓库最大的100个文件

如果你指定给定文件的blob IDs你可以直接这些ID放在文本中让他删除

bfg --strip-blobs-with-ids blobs.txt your-repo.git

bfg的原理不是通过修改你head files来实现,而是调整你的历史,当然如果你不想破坏对应的分支,你可以使用--protect-blobs-from选项,比如

bfg --protect-blobs-from master,dev,stage --strip-biggest-blobs 100 your-repo.git

这个选项表示我虽然删除100MB的文件,但是不去破坏master,dev,stage这三个分支

这里之所以推荐bfg,除了他速度快之外,另外一个就是他的语法简单,考虑上面的场景,如果你要用git filter-branch的话,你需要写

git filter-branch --index-filter 'git rm --cached --ignore-unmatch dumpfile.sql' merge-point..HEAD

这个一对比就看出来哪个对程序员更加友好了

删除完对应的文件之后,需要去清理你的gc以及reflog:

cd your-repo.git git reflog expire --expire=now --all && git gc --prune=now --aggressive

PS:

他不会破坏你的last commit,比如你在last commit中加入了大文件,他的-b是不会起作用的,这个时候你可以考虑使用--amend等

743cf73dd564a59e790eae9f16c46813.png



推荐阅读
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • 【Mysql】九、Mysql高级篇 索引
    MYSQL索引一、什么是索引?二、索引数据结构1、mysql数据库的四种索引2、BTREE结构三、索引分类、创建索引、查看索引1、单值索引2、复合索引3、函数索引4、 ... [详细]
  • Git GitHub多人协作
    在学校做一个小项目需要多人协作,就用到了gitHub,百度了一下多数写得乱七八糟或者支离破碎,于是总结了一下自己的步骤如下,第一次使用GitHUb,哪里不对望大神指出一.前期准备: ... [详细]
  • 双十一在家学用 Git
    对于所有的开发者来说,掌握一门代码版本控制系统都是必须的,无论是自己做项目,团队合作,工作中的合作,都离不开版 ... [详细]
author-avatar
少爷自控_592
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有