一、问题说明

如图,由于之前上传了一些比较大的文件,导致项目太大。即使后来删除,记录中还是保存了这个文件。以后不管是拷贝,还是push/pull都比较麻烦。这会导致所有人每次git fetch需要浪费很多时间。查看项目仓库大小可以使用命令git count-objects -vH。

如图,我的项目已经超过4G了,下面进行清理。

切记: 大文件需要添加到 .gitignore文件

二、解决方法

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

2. 查看有哪些大文件

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk ‘{print$1}‘)"

这里查询最大的前10个,然后观察其中是否有需要删除的大文件,比如这里是测试视频和模型权重,都应该删除。

3. 移除对该文件的引用

git filter-branch --force --index-filter ‘git rm -rf --cached --ignore-unmatch 文件/文件夹‘ --prune-empty --tag-name-filter cat -- --all

文件如:5.mp4

文件夹如:/models/

注意:一次只能处理一个文件/文件夹,如果有多个需要耐心处理。

4. 回收空间,清理本地仓库中不可到达的对象

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

如图,删掉视频后,从2G减小到700M。

5. 推送到服务器,清理远程仓库

git push origin --force --all

git remote prune origin

完成后拉取项目将会变小,但是Gitlab的项目的大小并不会变化。不过后面拉取项目会变小,也变成700M了

5. 注意

清理完之后,每个人一定要删掉之前拉取的项目, 重新从git上拉项目。不要使用之前的项目了!否则会不降反升!

这是赤裸裸教训

三、清理服务器缓存

如果有条件进入到Gitlab服务部署目录,可以对远程仓库进行确认和瘦身。(没有条件,没有尝试)

sudo su

cd ${gitlab项目部署目录}/git-data/repositories/{待清理的项目地址}

git count-objects -vH # 此时还是旧的大小

git gc --prune=now # 清理无效文件

git count-objects -vH # 此时就和本地一样,从库减小了

参考资料

原文:https://www.cnblogs.com/geoffreyone/p/14603537.html

git服务器+查文件大小,Git项目过大清理(针对大文件)相关推荐

  1. 搭建git服务器及利用git hook自动布署代码

    注意:服务器:Ubuntu Server 14.04,我的项目比较小,所有操作都使用root,建议最好新建一个用户(需要有管理员权限,否则在后面使用hooks自动部署代码时会出现各种权限问题,很蛋疼的 ...

  2. 阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)

    起因 自己会有练手的不敢公开的项目,就自己搭建个服务器放自己的渣代码了. 在经历了连不上服务器.没有访问权限.没法提交以后,我打通了任督二脉. 我这个git服务器适合条件:1.就那么几个人小项目,不是 ...

  3. centos6.5搭建git服务器 win10 安装git客户端连接 和遇到的问题+解决方式

    假设CentOS6.5的IP地址为192.168.0.10,centos上有一个普通用户skefer以及root超级用户 Win7的IP地址为192.168.0.20, 用户名为 tangpeng 1 ...

  4. git服务器的建立——Git折腾小记

    这两天刚完成了一个小项目,整理资料发现现在写代码跟文档又没有版本控制的意识,刚好前两天电脑出问题,差点所有代码跟文档全丢掉,所以这两天又在自己的台式机上架起了git,做所谓的代码服务器,之前折腾过一次 ...

  5. 搭建git服务器并管理系统,git服务器搭建与配置管理

    git服务器搭建与配置管理 内容精选 换一换 弹性云服务器(Elastic Cloud Server)是一种可随时自动获取.计算能力可弹性伸缩的云服务器,可帮助您打造可靠.安全.灵活.高效的应用环境, ...

  6. 88.搭建git服务器 安装与使用gitlab gitlab备份与恢复

    2019独角兽企业重金招聘Python工程师标准>>> 22.13 搭建git服务器 22.14/22.15 安装gitlab 22.16 使用gitlab 22.17 gitlab ...

  7. Git详解之四 服务器上的Git

    Git详解之四 服务器上的Git 服务器上的 Git 到目前为止,你应该已经学会了使用 Git来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git仓库.尽管技术上可以从个人的仓库里推送和拉 ...

  8. Gitolite 构建 Git 服务器

    参考 Gitolite 构建 Git 服务器 steps: $ sudo adduser --system --shell /bin/bash --group git $ cp .ssh/id_rsa ...

  9. 手把手教你搭建 Git 服务器

    https://gitbook.cn/books/5e81adf58d6af944d1f26356/index.html 1. 服务器端安装 Git 切换至 root 账户: su root 看一下服 ...

最新文章

  1. 加载静态文件,父模板的继承和扩展(2017.11.3)
  2. maven-resources-plugin include 通配符
  3. lucene的数据类型
  4. POJ-1384 Piggy-Bank 多重背包变形
  5. 声明式和命令式编程_命令式与声明式编程
  6. c socket双向通信 qq linux,请问如何实现像QQ那样2个内网用户的点到点SOCKET通信?...
  7. Python debug —— 逻辑错误(三)
  8. Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment
  9. windows server 2008 NLB 集群
  10. 网页数据实时更新的三种简单方法
  11. 比亚迪半导体IPO再生波折:又被中止审核 红杉小米是股东
  12. 苹果修改wifi密码登陆服务器密码,iphone手机修改wifi密码
  13. linux磁盘管理——quota磁盘配额GPT分区
  14. 解决opencart配置Gmail邮箱收不到来信
  15. Kafka 如何给集群配置Scram账户认证
  16. MySQL之分库分表
  17. 中国人民大学 计算机应用技术,中国人民大学计算机应用技术考研经验-人大信息学院考研辅导班...
  18. 聊一聊SLAP:单一抽象层级原则
  19. 【English】外企常用的英语面试问题总结
  20. Java家庭收支明细代码

热门文章

  1. 【产品】 产品设计之结构设计:注塑件产生气纹的原因
  2. 子网掩码是什么?子网掩码及其CIDR斜杠表示法
  3. 4500m a8 amd_amd a8 4500m等同什么intel
  4. 【操作系统基础】操作系统的分类与发展
  5. CleanMyMac X2023Mac电脑空间内存清理工具
  6. SDK接入(之Android Google Play内支付(in-app Billing)接入的细节
  7. 25个问题让你了解谷歌钱包
  8. ClassFactory 无法供应请求的类 (异常来自 HRESULT:0x80040111 (CLASS_E_CLASSNOTAVAILABLE))
  9. 详解Unity中的粒子系统Particle System (十一)
  10. Android bug日志/错误收集