文章目录

  • 使用bfg快速清理git历史大文件
    • 步骤
    • 脚本
    • 清理服务器

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

之前写过一篇的,使用的git命令清理的大文件,但是我3G多的git,.git文件夹里面的pack就3G多,而且是个好几年并且在持续开发的项目,里面的提交成千上万了,每次使用git filter-branch,都要好几个小时,我研究了一下,要彻底清理项目中的那一堆大文件,只要要用脚本连续跑两天。。。
最近发现了一个方案,使用bfg,我仅仅十几分钟就处理完了
原先的方案:https://blog.csdn.net/qq_36254947/article/details/108601940

  • 下载jar包:https://rtyley.github.io/bfg-repo-cleaner/#download

步骤

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

  • 拉取代码

注意:需要ssh拉取,http不行(ssh拉取需要配置ssh密钥)
git配置ssh密钥

git clone --mirror git项目的ssh地址
# 拉取的是 项目名.git  文件夹,这是Git项目中的.git文件夹
  • 查看大文件
# 进入项目文件夹
cd xxx.git
# 查询大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
# tail -n 代表查看前n个大文件,
  • 清理文件夹
java -jar bfg-1.13.0.jar --delete-folders 清理的文件夹名字  本地git项目地址
# 注意:文件夹名字,而不是文件夹路径,要小心别把其他文件夹中的同名的文件夹删除了
# 若是jar包放到了 git项目中,不需要添加  本地git项目地址 ,但最好不要放到.git文件夹中
  • 清理文件
java -jar bfg-1.13.0.jar --delete-files 删除的文件名 本地git项目地址
# 注意:这是文件名只是名字部分,不包含路径
  • 清理无效文件
# 删除的文件和文件夹,需要这一步才会真正清除
git reflog expire --expire=now --all && git gc --prune=now --aggressive
  • 查看大小
git count-objects -vH
# 此时就能发现项目小了
  • 推送
git push -f  # -f 强制推送

脚本

# 开始
time1=$(date)
echo 开始时间 $time1echo 拉取项目
git clone --mirror git@1xxxx.git
jarpach="D:\test1\bfg-1.13.0.jar"  # jar包地址cd "D:\转换\test1\xxx.git"  # git项目地址git count-objects -vH
echo
echo
echo
echo 清理文件提交
echo
# 将需要清理的文件列出来
java -jar $jarpach --delete-folders 文件夹1
java -jar $jarpach --delete-folders 文件夹2
java -jar $jarpach --delete-files dist.*
java -jar $jarpach --delete-files 文件2echo
echo echo 清理无效文件
echo git reflog expire --expire=now --all && git gc --prune=now --aggressive
echo
echo
echo 清理完成git count-objects -vHecho
time2=$(date)
echo 开始时间 $time1 ---结束时间 $time2

清理完之后,若是没有问题,进入项目文件夹使用git push -f强制推送即可,之后别忘记清理服务器


清理服务器

清理完文件之后,需要清理一下服务器

#从git服务器进入这个项目的.git文件夹
cd /var/opt/gitlab/git-data/repositories/xx/.git  #根据配置可能不同
# 清理文件
git gc --prune=now --aggressive
#查看大小
git count-objects -vH

注意:我清理完之后,git服务器使用http不能拉取代码了,重启服务器解决了

  • git clone异常 【fatal: protocol error: bad line length character: Inte】

使用bfg快速清理git历史大文件相关推荐

  1. Git仓库瘦身--清除项目git仓库大文件

      Mark一下"清除A项目git仓库大文件"实操过程,由于公司保密政策,无法提供实操截图,这里提供下操作思路. 后来也搜到更加推荐的方法:用BFG去做git仓库的清理(最佳工具) ...

  2. git提交大文件的解决方法

    git提交大文件的解决方法 参考文章: (1)git提交大文件的解决方法 (2)https://www.cnblogs.com/perryxiong/p/5606525.html 备忘一下.

  3. git clone大文件EOF错误

    git clone大文件EOF错误 我们常用的git clone https://XXX 下载大文件时,加上墙的问题.会出现中断,例如gitlab git clone https://gitlab.c ...

  4. git提交大文件报错解决方案

    git提交大文件报错解决方案 1.http.postBuffer 2.Git LFS 安装及配置git lfs 1.在Git仓库中为仓库设置相关配置 2.选择要用LFS追踪的文件 3.查看正在被LFS ...

  5. git服务器+查文件大小,Git项目过大清理(针对大文件)

    一.问题说明 如图,由于之前上传了一些比较大的文件,导致项目太大.即使后来删除,记录中还是保存了这个文件.以后不管是拷贝,还是push/pull都比较麻烦.这会导致所有人每次git fetch需要浪费 ...

  6. github删除文件_github 仓库中删除历史大文件

    问题 如果git中提交了大文件,而且保存到了版本库中,那在下载或者克隆git包的时候,速度会非常慢.再加上github在国内访问本来就很慢,可能会导致包无法下载(克隆).为了提升下载(克隆)速度,可以 ...

  7. 【Git删除大文件失败,提示WARNING: Ref ‘refs/heads/master‘ is unchanged的解决思路】

    1. 问题描述 最近使用Gitee一直在独立开发某个项目,某次因为某个测试文件比较大,超过了100MB,gitee无法接受,上传失败.但是当时我没有发现上传失败,就没有处理,等到今天发现的时候,已经提 ...

  8. 项目:如何快速实现电脑间大文件(lichee.tar.gz)互传?

    1.电脑间大文件互传遇到问题 最简单是使用U盘进行大文件互传,但是可能会遇到这种问题,只能取消. 一般我们也可以借助云盘,进行互传.A电脑把电脑上传到百度云盘上,B电脑再下载,但是可能会遇到这种问题. ...

  9. windows虚机环境下,如何快速有效的删除大文件夹?

    在调试稳定性测试过程中,由于有的机器C盘越来越小,就必须进行电脑清理,清理%tmp%目录和回收站是必须的. 现在我的虚机的%tmp%目录下有15万个文件,该如何快速有效删除呢?这些文件中有的是拒绝删除 ...

最新文章

  1. 这几种思维模式,都是你的职业发展的绊脚石
  2. eclipse如何部署到tomcat上的
  3. Activity service 通信
  4. 前端学习(768):构造对象与对象区别
  5. Pandas高级操作
  6. Xshell5 破解
  7. 台式机Ubuntu20.04系统下安装Tenda U12 无线网卡驱动
  8. mysql front新建数据库_简述MySQL-Front数据库的具体操作
  9. HTML_炫酷的按钮样式
  10. 2022-2027年中国缝制机械行业市场全景评估及发展战略规划报告
  11. 华为p30pro鸿蒙悟空,华为新广告《悟空》火了,竟是华为P30Pro拍的?
  12. 【latex】Latex解决表格过宽问题,自适应调整宽度;自动调整适合的表格大小
  13. excel中“~”替换成“-”
  14. 级数收敛与交换运算顺序
  15. 双因素认证,让用户的帐号安全无忧
  16. PHP 将大量数据导出到 Excel 的方法
  17. 如何升级Python的pip?
  18. iOS 判断APP是否打开定位,并实现直接跳转打开定位
  19. 网上购车平台低首付购车噱头的运作模式
  20. 搭建BWAPP靶场(详细过程)

热门文章

  1. Vue项目实战---外卖app笔记
  2. 刷题笔记:千奇百怪的排序算法
  3. pycharm2018.3.4下载以及激活方式
  4. 在applicationContext中配置引入其他properties文件 以及使用
  5. 工程伦理第七章习题答案
  6. ICCV2021:Spatially-Adaptive Image Restoration using Distortion-Guided Networks
  7. 南邮计算机学院答辩,南京邮电大学来华留学研究生答辩流程
  8. 读csv文件java_用Java读取CSV文件的最快方法
  9. Photoshop:1 - 光和色
  10. [个人笔记] FortiGate IPSec+策略路由实现流量的路径分发