如何清除Git历史变更记录
以前公司的一个项目代码,从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的命令有很多,可以删除文件、可以根据文件大小等删除,我们可根据需求灵活使用。
资料
三种清除Git提交历史的方法
[因累积太多无法提交到 github,如何清除历史变更记录?](https://segmentfault.com/q/1010000004996998)
官网
最后
大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)
我的个人博客为:https://shidawuhen.github.io/
往期文章回顾:
设计模式
招聘
思考
存储
算法系列
读书笔记
小工具
架构
网络
Go语言
如何清除Git历史变更记录相关推荐
- Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
文章目录 一.前言 二.清除git仓库的所有提交记录 本节速览 清除git仓库的所有提交记录 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 ...
- 使用bfg快速清理git历史大文件
文章目录 使用bfg快速清理git历史大文件 步骤 脚本 清理服务器 使用bfg快速清理git历史大文件 之前写过一篇的,使用的git命令清理的大文件,但是我3G多的git,.git文件夹里面的pac ...
- 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基 ...
- 如何清除Git中的本地工作目录? [重复]
本文翻译自:How do I clear my local working directory in Git? [duplicate] This question already has an ans ...
- 从git中永久物理删除私密文件(改写git历史)
第一步:切换到git本地库的最上一级 第二步:递归重写git历史 # git filter-branch --tree-filter 'rm -f admin/test.sh ' --tag-name ...
- 修改git历史提交的commit信息
本文是基于idea的操作,亲测可用 前言: 很多公司都会自定义 Git - 使用强制策略,那么他的commit信息就会有固定的格式,一旦不是这个格式,就会出现push失败 但是push失败,很多也只在 ...
- 如何让你的 Git 历史保持“干净”?!
消除 Git 历史的最佳手段有哪些? 作者 | Manuel Sidler 译者 | 谭开朗,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 使用Git已有几年的时间了,我 ...
- 微信小程序搜索,搜索历史,清除搜索历史,以及点击搜索历史实现搜索功能
微信小程序搜索,搜索历史,清除搜索历史,以及点击搜索历史实现搜索功能 热搜内容一般从接口遍历的,实现方法基本和搜索历史差不多 wxml页面 <view class="search-he ...
- JavaWeb开发:历史变更记录(基于SSM框架)
目录 一.效果展示 二.实现 1.表单提交 2.Controller层 3.Service层 4.ServiceImplement层 (1)记录下修改前的表单内容 (2)记录修改后的数据 (3)记录下 ...
最新文章
- Django REST framework API 指南(11):序列化·关系
- 清空list_3. Python3轻食丨一个故事看懂List所有用法:1年级1班的班级生活
- Docker核心原理之namespace
- 快速定位关键爆破点的几种方法
- 北斗导航 | 监测和减轻空间天气对GNSS应用的影响
- 【转载】Linux系统挂载NTFS文件系统
- python装饰器执行顺序
- uniapp无法使用substr_关公战秦琼------Excel、SPSS Modler和R的使用对比(下)
- NSOperation的进阶使用和简单探讨
- VS Code 神器插件:代码一键运行,支持超过 40 种语言!
- JAVA共通関数--システム時刻を取得する(1)
- 向日葵远程控制使用方法
- 电力线通信技术的发展
- 微软称暂时无意起诉抄袭XP界面的雨林木风
- python绘制女孩_[宜配屋]听图阁
- 阿里20亿美金收购考拉,丁磊到底是怎么“失身”的?
- php 工商银行公众号支付代码_微信支付 —— 公众号支付代码详解(1/7)
- routing-controllers工作原理解析
- 用python计算工资工资_python税后工资计算器
- SyntaxError: Missing parentheses in call to ‘print‘. 正解