gitLab清理大文件_包括历史记录中的大文件

2023-10-27

gitLab清理大文件_包括历史记录中的大文件

项目中经常有不小心提交的大文件,这个就是清理方法

后面发现了更好的方法 : 使用bfg快速清理git历史大文件

前言

注意:清理完之后,其他人一定要删掉之前拉取的项目,重新从git上拉项目,不要使用之前的项目了,之前的项目中的.git文件会将已将删除的文件重新加进来,甚至变的更大

查询/清理文件的时候若是想提速,可以关掉 360/电脑管家等这样的软件,这些软件会监控文件,拖慢速度…我之前提示8小时的处理,关掉360之后2小时就完成了.

查看仓库大小

git count-objects -vH  # 查看当前仓库大小
 
du -sh  # 查看这个文件夹的总大小
 
ls -lh  # 查看这个文件夹中文件的大小
解除保护分支

默认情况下,git项目是有一个保护分支的

image-20200911181005027

image-20200911181110097

操作

1、拉取项目:将项目所有分支拉下来

git clone xxx # 默认拉取master分支
cd xx #进入拉取的文件夹
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

2、查找大文件(若是知道具体的文件,不需要查)

# 将最大的10个文件查询下来
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
# 比如我查询了
486fa66baeb237a456266dccfab8bab14cde98ba pro_web_front_202009101858.gz
d644ed6c55ecc6e058a0a7d0c39c4e49984a37d1 src/assets/img/2.png
f45b37335083ad5c5598e3cf5a75a9fc07b9a803 static/pdf/build/pdf.worker.js.map
21e9d2cd0c73b246d86f603c7ff0e5cd8b8312bc static/pdf/web/operationManual.pdf
7c65cab916684f43d66053e570dbdf453e8ca507 src/assets/img/login.png
f8aebc2a121c89c99190553ac9b3dcc853315182 src/assets/img/login_2.png
13868adfda3704f8a8b10f64da068a11a418ccf2 src/assets/img/login_3.png
# 其中需要删的是 pro_web_front_202009101858.gz

3、处理记录

#文件可以是文件夹,也可以是文件 ,
#例如:文件夹的话可以是  /dist.js/
#例如:文件可以是  static/pdf/build/pdf.worker.js
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 文件' --prune-empty --tag-name-filter cat -- --all
# 会在项目根目录生成 .git_....文件夹,里面就是改的记录
# 一次只能处理一个文件/文件夹
 
# 回收空间
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
# 此时查看本地,会发现项目明显减小了,若是还有需要的文件,就重复第3步即可

4、推送到服务器

git push origin --force --all
git remote prune origin
# 此时 ,拉取项目就已经是减小后的大小
# 但是查看服务器,服务器显示的大小还是原来的大小

5、清理服务器缓存

# 进入git服务器-->这个操作需要root权限,不然连文件夹都进不去
cd /var/opt/gitlab/git-data/repositories
#根据项目,进入对应的git项目文件夹
# 进入 项目.git文件,就可以看到和本地的.git目录中一样的目目录了
#查询git项目大小
git count-objects -vH   # 此时还是旧的大小
git gc --prune=now  # 清理无效文件
git count-objects -vH  # 此时就和本地一样,从库减小了

貌似gitlab服务器有缓存,此时服务器的仓库中文件大小已经减小了,但是在浏览器上通过页面查看,还是原来的大小

再次申明:清理完之后,每个人一定要删掉之前拉取的项目,重新从git上拉项目。不要使用之前的项目了!!!之前的项目中的.git文件会将已将删除的文件重新加进来,甚至变的更大

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gitLab清理大文件_包括历史记录中的大文件 的相关文章

  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 自动生成/删除詹金斯工作

    我正在寻找一种自动创建一组詹金斯作业的方法 通常在创建新的 git 分支之后 我已经为maven尝试过这个插件 http evgeny goldin com wiki Maven jenkins plugin http evgeny gol
  • 在centos上设置jenkins:ssh密钥和git的问题

    经历了很多问题 但似乎没有什么能解决我的问题 或者更准确地说 我不确定我是否正确地完成了整个事情 所以这里是 已安装centos 6 3操作系统 然后我按照以下指南安装詹金斯 https wiki jenkins ci org displa
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • GIT - 推送到 (GitHub) origin master 没有任何作用

    我已经分叉了某人的 GIT 存储库 https github com nippysaurus toodledo objc 将其克隆到我的本地计算机 显示带有以下信息的来源 remote origin Fetch URL https emai
  • git 如何查找分支源自的提交哈希

    假设我从主分支分支到主题分支 然后在主题分支上进行了一些提交 是否有命令告诉我主题分支源自的主分支上的提交哈希 理想情况下 我不必知道我做了多少次提交 试图避免 HEAD 5 我已经用谷歌搜索过 但似乎无法找到答案 谢谢 use git m
  • 执行 git Push 时出现“diff.renamelimit 变量”警告

    我将本地提交推送到远程 git 服务器并收到以下警告消息 remote warning only found copies from modified paths due to too many files remote warning y
  • 尝试配置 GIT 时 Eclipse 没有响应

    Windows 10 专业版 64 位SSD金士顿 i5 4690Eclipse 版本 全部工作空间 空问题 每次我尝试配置 TEAM gt GIT gt 配置或尝试导入 创建本地 远程 git 时 Eclipse 都会冻结 直到我强制用任
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 如何让 git 显示作者日期指定日期范围内的提交?

    显然this https stackoverflow com a 11189286 281545 git log all after
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 有什么方法可以从提交的消息中获取提交的 SHA 值吗?

    当做一个git tag 我并不总是擅长记住 HEAD 6 例如 是包含的还是排他的 鉴于我的大多数提交都以问题号为前缀 我想知道是否有一些神奇的命令可以从其消息的一部分中搜索提交 SHA 我知道这很容易做到git log并从那里开始工作 但
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • Gitlab 6.2 不与授权密钥同步

    我放入 Gitlab GUI 中的密钥没有显示在authorized keys 文件中 因此我无法推送或拉过 ssh 任何尝试都会要求我输入 ssh 密码 我使用的是 gitlab 6 2 稳定版 这是一些命令的输出 git CVIAL27
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd
  • 我如何才能看到 Github 风格的东西,例如 git -repo 的打孔卡和时间线?

    我正在寻找一个可以可视化 git repo 工作的软件 我喜欢 Github 的一些功能和 Bitbucket 的一些功能 所以我不想使用它们 因为它们并不完美 我正在寻找创建类似视觉特征的方法 下面你可以找到一些部分 但仍然缺少很多谜题
  • Git 实验分支还是单独的实验存储库?

    我正在开发一个 Android 应用程序 并且在整个开发周期中一直使用 Git 现在 我想构建并发布实验性功能 供人们尝试和安装 同时仍将原始的 稳定的应用程序安装在他们的设备上 现在 这意味着我需要使用不同的包名称 这会更改开发项目中的一

随机推荐

  • 美国国家安全局(NSA)网络攻击主战武器“酸狐狸”

    近日 国家计算机病毒应急处理中心对美国家安全局 NSA 酸狐狸 漏洞攻击武器平台 FoxAcid 进行了技术分析 该漏洞攻击武器平台是美国国家安全局 NSA 特定入侵行动办公室 TAO 也被称为 接入技术行动处 对他国开展网络间谍行动的重要
  • 乐高编程学c语言吗,乐高编程和少儿编程的区别

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 乐高编程和少儿编程的区别如下 1 乐高编程是以调用编程模块指令让机器动起来为目的 通常需要编程的模块是已经写好存储在模块里的 学员做的只是将模块以不同的方式拼接组合起来 2
  • DataGridView控件常用属性

    DataGridView控件常用属性 1 AllowUserToAddRow 去掉最后一行添加行的选项 2 RowHeadersVisble 去掉第一列包含行标题的列 3 AutoSizeColumnsMode 可见列的自动调整大小 4 S
  • C++ 预处理器

    预处理器是一些指令 指示编译器在实际编译之前所需完成的预处理 所有的预处理器指令都是以井号 开头 只有空格字符可以出现在预处理指令之前 例如 include 指令 这个宏用于把头文件包含到源文件中 C 还支持很多预处理指令 比如 inclu
  • 关系型数据库和NoSQL数据库探讨

    在当今数据时代 数据量持续增长 数据种类不断增加 使得传统关系型数据库面临了很大的挑战 为了解决这些问题 新型数据库技术也应运而生 同传统关系型数据库进行对比 就可以更好地了解其优点和局限性 1 传统关系型数据库的弊端 在传统关系型数据库中
  • 怎么用Python实现微信自动回复,一文看懂

    都什么年代了 不会还有人用itchat吧 itchat早就寄了 在网上搜用Python实现微信自动回复的 搜来搜去全是用itchat 一运行全都不行 无奈只能自己用别的库实现 根据预定的csv数据自动回复 import numpy as n
  • C# 泛型List相关用法以及与ArrayList和数组三者的区别

    数组 首先在C 也是存在数组的 用法如下 一维 string s new string 2 s 0 a s 1 b s 0 c 修改 二维 string arr new string 3 5 表示三行五列的二维数组 1 1 1 1 1 1
  • 收到字节跳动 java岗offer后,他终于哭出了声!

    在小刘拿到offer的那天下午 他打了个电话给我 他诉说着对我的感谢 吐槽面试遇到的奇葩事儿 最后 他激动的说 建哥 我终于不用担心变成失业人员了 找工作有多可怕 小刘是我亲自带的第一届实习生 他聪慧 一点就透 踏实 不懂就问 不会就学 这
  • Java IO

    相关概念 Java IO Java的核心库java io提供了全面的IO接口 包括 文件读写 标准设备输出等 Java中IO是以流为基础进行输入输出的 所有数据被串行化写入输出流 或者从输入流读入 流 流是一个很形象的概念 当程序需要读取数
  • 如何实现make工具的降版本?

    为什么要降make版本 因为编译MTK 平台的Android source code报错 而且是莫名奇妙的错误 困扰很久 一 问题背景 Ubuntu 15 04以上的make版本都已经是4 0 官方目前推荐的编译环境还是基于Ubuntu 1
  • 前端 Leader 如何做好团队规划?阿里内部培训总结公开

    阿里妹导读 作为一名前端团队的管理者 如何做好团队规划 老板不是前端 如何做出被认可的成绩 今天 阿里前端技术专家剑平 将结合自己的亲身经历 以及阿里内部培训课程 写下了自己的思考和理解 与大家共同分享 欢迎一起讨论交流 前言 行成于思 毁
  • 基于MATLAB的随机森林分类

    该分类器最早由Leo Breiman和Adele Cutler提出 在机器学习中 随机森林是一个包含多个决策树的分类器 并且其输出的类别是由个别树输出的类别的众数而定 Leo Breiman和Adele Cutler发展出推论出随机森林的算
  • 拒绝从入门到入土:初识C语言

    目录 一 什么是C语言 1 C语言是与计算机交流的语言 2 计算机的组成 3 计算机语言的发展是从低级到高级的 C语言的发展也不例外 4 什么是编译 二 第一个C语言程序 1 步骤 2 main函数的使用 3 其他问题 三 常量与变量 1
  • 机器学习—有监督学习—KNN-K近邻法(k-NearestNeighbor)

    一 KNN简介 KNN K Nearest Neighbor 最邻近分类算法是数据挖掘分类 classification 技术中最简单的算法之一 其指导思想是 近朱者赤 近墨者黑 即由你的邻居来推断出你的类别 实现原理 为了判断未知样本的类
  • javascript - 实现拍照功能(详细示例代码)

    介绍 HTML5 的 getUserMedia API 为用户提供访问硬件设备媒体 摄像头 视频 音频 地理位置等 的接口 基于该接口 开发者可以在不依赖任何浏览器插件的条件下访问硬件媒体设备 另外 主流浏览器 Firefox Chrome
  • MatLab 中计算开根号

    原文地址为 MatLab 中计算开根号 1 方法 例如 如果对4要开根号 可以输入函数如下 gt gt sqrt 4 2方法 根号其实是1 2次方 gt gt 4 1 2 同样可以得到结果 转载请注明本文地址 MatLab 中计算开根号
  • ANOMALY简记-ANOMALY LOCALITY IN VIDEO SURVEILLANCE

    创新点 提出了一个带有标记的异常检测库 总结 http imagelab ing unimore it UCFCrime2Local
  • linux编译安装kvm、qemu

    kvm作为主流虚拟化产品 其实它的用户层使用的是qemu 所以要安装使用kvm 一般需要安装kvm kmod以及qemu两部分 安装kvm kmod 1 首先下载kvm kmod源码并解压 2 进入源码目录 3 configure kern
  • Spring Web MVC框架(五) 文件上传

    Spring同样支持文件上传功能 不过该功能默认未开启 因为可能有些开发者可能希望自己处理文件上传过程 Spring的文件上传功能在org springframework web multipart包下 有两个MultipartResolv
  • gitLab清理大文件_包括历史记录中的大文件

    文章目录 gitLab清理大文件 包括历史记录中的大文件 前言 查看仓库大小 解除保护分支 操作 gitLab清理大文件 包括历史记录中的大文件 项目中经常有不小心提交的大文件 这个就是清理方法 后面发现了更好的方法 使用bfg快速清理gi