处理.git文件夹过大出现臃肿题目

打印 上一主题 下一主题

主题 531|帖子 531|积分 1593

1、题目配景

在软件开发过程中,版本控制是一个至关重要的环节。Git 作为一种盛行的分布式版本控制体系,被广泛应用于各种项目中。然而,近期我们发现在进行项目发版时,Git 克隆项目的时间明显增加,严峻影响了发版的效率。颠末分析,我们发现题目重要出在项目文件过大,导致克隆过程痴钝。
缘故起因:开发误操纵上传Jar包,导致项目变大,后面就算删除jar,但是有commit记录,依旧导致文件过大。
正常大小:226M
非常大小:2.6GB
2、环境介绍



  • 项目名称: xxxx_adc_backend
  • 代码托管平台: GitLab
  • 重要分支: pre-fjfsim
  • 清算工具: BFG Repo-Cleaner
3、清算缘故起因

在开发过程中,项目中引入了一些大文件,这些文件不光增加了代码库的体积,还影响了代码的推送和拉取效率。为了进步项目的整体性能和维护性,我们决定采用 BFG Repo-Cleaner 进行清算。
4、清算步骤

1. 开发人员克制推送代码

在开始清算之前,须要确保全部开发人员停止推送代码,避免在清算过程中产生新的提交。
2. 运维备份代码

运维人员须要对 xxxx_adc_backend 项目进行备份,以便在清算过程中出现题目时可以快速回滚。

3、查询大文件记录

参考文档:https://blog.csdn.net/cysear/article/details/102823671
注意:记录是commit中,最好定位到有题目的分支,在题目分支上操纵。比如我的大文件记录,在pre-fjfsim 上,所以我指定的是 pre-fjfsim
  1. #克隆仓库的镜像
  2. git clone --mirror -b pre-fjfsim git@gitlab.fujfu.com:ownit/ownit_test.git
复制代码


  • git clone --mirror:克隆堆栈的镜像。镜像克隆会克隆全部分支和标签,但不会克隆工作目录和历史记录。
  • -b pre-fjfsim:指定克隆的分支为 pre-fjfsim。
  • git@gitlab.fujfu.comwnit/ownit_test.git:堆栈的 URL。
  1. #查找大文件的 SHA-1 哈希值
  2. git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
复制代码



  • git rev-list --objects --all:列出全部对象的 SHA-1 哈希值。
    1. grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
    复制代码
    :这部分是一个复杂的管道命令,用于过滤出大文件的 SHA-1 哈希值。

    • git verify-pack -v .git/objects/pack/*.idx:验证打包文件,并表现每个对象的详细信息。
    • sort -k 3 -n:根据第三列(文件大小)进行数字排序。
    • tail -5:表现排序后的最后五行,通常是最大的五个文件。
    • awk '{print$1}':打印每行的第一个字段,即 SHA-1 哈希值。
    • grep:使用这些 SHA-1 哈希值作为搜刮模式,从 git rev-list --objects --all 的输出中过滤出相关的对象。

4、使用 BFG 清算大文件

BFG Repo-Cleaner 是一个高效的工具,可以帮助我们快速清算 Git 历史中的大文件。以下是详细的清算步骤:
参考记录:https://rtyley.github.io/bfg-repo-cleaner/
克隆项目

  1. git clone --mirror -b pre-fjfsim git@gitlab.xxxx.com:ownit/ownit_test.git
复制代码
清除大文件

  1. java -jar bfg.jar --delete-files xxxx_adc_backend_mac.tgz ownit_test.git
  2. java -jar bfg.jar --delete-files xxxx_adc_backend_mac_2024_0202.tgz ownit_test.git
复制代码

删除文件重构索引

  1. cd ownit_test
  2. git reflog expire --expire=now --all && git gc --prune=now --aggressive
复制代码
检察容量

  1. git count-objects -vH
复制代码
更新长途

  1. git push -f
复制代码
5、开发人员查抄

清算完成后,开发人员须要查抄代码库是否正常。如果一切正常,则可以继续推送代码。如果发现非常,可以根据备份代码进行回滚。
5、总结

通过这次清算,我们成功地从 xxxx_adc_backend 项目中移除了不须要的大文件,不光减轻了代码库的负担,还进步了代码管理的效率。BFG Repo-Cleaner 以其高效和稳定性,成为了我们清算 Git 历史大文件的首选工具。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表