以前公司的一个项目代码,从2014年一直存活到了2021年,目前应该还在被使用。整个代码将近2G,git文件极大,其中很大的一个原因是代码里存放过apk文件。如此大的项目,导致下载、发布很困难。

最初打算创建一个新的远程仓库用来替换旧仓库,但是该项目涉及的位置和使用者太多。另外一个方案是删除apk的变更记录,项目也会变小很多。此处推荐一个工具,能够较快的删除Git的历史变更记录。

一、创建仓库

创建远程仓库,里面有README.md文件,做两次提交,分别提交数字1和数字2。如下图所示:

二、安装工具


这款工具名为bfg,官方地址为:https://rtyley.github.io/bfg-repo-cleaner/。

先下载jar文件到本地:

wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

如果没有Java,则需要进行安装:

apt install default-jre
java -v

为了方便执行,我们可以设置别名:

alias bfg='java -jar bfg-1.14.0.jar'

三、操作

1.删除文件

为了删除变更记录,需要先删除该文件。

2.下载远程仓库

创建新的目录,将远程仓库下载下来

git clone --mirror git://example.com/some-big-repo.git
# git clone --mirror http://127.0.0.1:3000/shidawuhen/test.git

3.删除指定文件

bfg --delete-files README.md test.git

通过日志能够看到删除情况:

cd test.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push

通过git历史,发现sha1值有变更,而且里面的改动已经消失了

四、总结


bfg的优势在于速度快,如果项目大是因为几个大文件导致的,大家可以用这种方案进行操作。

另外bfg的命令有很多,可以删除文件、可以根据文件大小等删除,我们可根据需求灵活使用。

资料

  1. 三种清除Git提交历史的方法

  2. [因累积太多无法提交到 github,如何清除历史变更记录?](https://segmentfault.com/q/1010000004996998)

  3. 官网

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式

  2. 招聘

  3. 思考

  4. 存储

  5. 算法系列

  6. 读书笔记

  7. 小工具

  8. 架构

  9. 网络

  10. Go语言

如何清除Git历史变更记录相关推荐

  1. Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录

    文章目录 一.前言 二.清除git仓库的所有提交记录 本节速览 清除git仓库的所有提交记录 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 ...

  2. 使用bfg快速清理git历史大文件

    文章目录 使用bfg快速清理git历史大文件 步骤 脚本 清理服务器 使用bfg快速清理git历史大文件 之前写过一篇的,使用的git命令清理的大文件,但是我3G多的git,.git文件夹里面的pac ...

  3. GIT(一):版本控制、git历史、git基本概念、git安装配置、git版本管理(本地和远程)、git分支管理

    目录 一.版本控制 1.1 版本控制概念 1.2 版本控制软件分类 1.2.1 集中式版本控制 1.2.2 分布式版本控制 二.git历史 三.GIT基本概念 3.1 GIT原理 3.1.1 GIT基 ...

  4. 如何清除Git中的本地工作目录? [重复]

    本文翻译自:How do I clear my local working directory in Git? [duplicate] This question already has an ans ...

  5. 从git中永久物理删除私密文件(改写git历史)

    第一步:切换到git本地库的最上一级 第二步:递归重写git历史 # git filter-branch --tree-filter 'rm -f admin/test.sh ' --tag-name ...

  6. 修改git历史提交的commit信息

    本文是基于idea的操作,亲测可用 前言: 很多公司都会自定义 Git - 使用强制策略,那么他的commit信息就会有固定的格式,一旦不是这个格式,就会出现push失败 但是push失败,很多也只在 ...

  7. 如何让你的 Git 历史保持“干净”?!

    消除 Git 历史的最佳手段有哪些? 作者 | Manuel Sidler 译者 | 谭开朗,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 使用Git已有几年的时间了,我 ...

  8. 微信小程序搜索,搜索历史,清除搜索历史,以及点击搜索历史实现搜索功能

    微信小程序搜索,搜索历史,清除搜索历史,以及点击搜索历史实现搜索功能 热搜内容一般从接口遍历的,实现方法基本和搜索历史差不多 wxml页面 <view class="search-he ...

  9. JavaWeb开发:历史变更记录(基于SSM框架)

    目录 一.效果展示 二.实现 1.表单提交 2.Controller层 3.Service层 4.ServiceImplement层 (1)记录下修改前的表单内容 (2)记录修改后的数据 (3)记录下 ...

最新文章

  1. Django REST framework API 指南(11):序列化·关系
  2. 清空list_3. Python3轻食丨一个故事看懂List所有用法:1年级1班的班级生活
  3. Docker核心原理之namespace
  4. 快速定位关键爆破点的几种方法
  5. 北斗导航 | 监测和减轻空间天气对GNSS应用的影响
  6. 【转载】Linux系统挂载NTFS文件系统
  7. python装饰器执行顺序
  8. uniapp无法使用substr_关公战秦琼------Excel、SPSS Modler和R的使用对比(下)
  9. NSOperation的进阶使用和简单探讨
  10. VS Code 神器插件:代码一键运行,支持超过 40 种语言!
  11. JAVA共通関数--システム時刻を取得する(1)
  12. 向日葵远程控制使用方法
  13. 电力线通信技术的发展
  14. 微软称暂时无意起诉抄袭XP界面的雨林木风
  15. python绘制女孩_[宜配屋]听图阁
  16. 阿里20亿美金收购考拉,丁磊到底是怎么“失身”的?
  17. php 工商银行公众号支付代码_微信支付 —— 公众号支付代码详解(1/7)
  18. routing-controllers工作原理解析
  19. 用python计算工资工资_python税后工资计算器
  20. SyntaxError: Missing parentheses in call to ‘print‘. 正解

热门文章

  1. typedef 与 typename 的用法
  2. 烽火HG680KA-Hi3798MV300-当贝纯净桌面-卡刷固件包
  3. IoT入门概述与物联网安全基础
  4. 无法在别的计算机里显示u盘,为什么我的u盘某些一部分文件夹在一个电脑上能显示而在另一个电脑上不显示?...
  5. 社群运营:如何管理好一个社群?
  6. windows 升级、删除pip
  7. 【RedHat Linux 操作系统安装配置规范】
  8. 知识图谱neo4j安装与启动,并导入食品抽检数据
  9. OpenGL简单介绍
  10. 水电装修需要注意的16个细节