首页 > 其他分享 >Git 仓库瘦身与 LFS 大文件存储

Git 仓库瘦身与 LFS 大文件存储

时间:2024-03-18 21:59:02浏览次数:26  
标签:文件 git objects -- 仓库 Git LFS 瘦身

熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久,追踪的文件越来越多,git 存储的 objects 数量会极其庞大,每次从远程仓库 git clone 的时候都会墨迹很久。如果我们不小心 git add 了一个体积很大的文件,且 git push 到了远程仓库,那么我们 git clone 的时候也会很慢。

看一下 GitHub 上的 microsoft/vscode 仓库,都有 九万多个 commit 了,可想而知 objects 的数量应该很恐怖,尝试 clone 一下(一百多万个 objects):

github vscode repo

clone vscode repository

这里微微记录下 Git 仓库瘦身和使用 Git LFS 进行大文件存储管理的几个常规操作。

Git 仓库瘦身

瘦身背景:错误把大文件 push 到了远程仓库

我们可以通过以下命令或者 du -mh 查看 Git 仓库的体积,git-count-objects

# 查看仓库体积情况
git count-objects -vH

示例:可以看到当前仓库体积只有 12.00 KiB 左右

demo git repository

现在我们模拟错误的将大文件上传到远程 Git 仓库的动作:

# 1、生成一个 90MB 大小的文件,Github 做了限制超过 100 MB 大小的文件建议使用 LFS,直接拒绝 push
➜ dd if=/dev/zero of=bigfile bs=90MB count=1
# 2、将这个文件 push 到远程仓库
➜ git add bigfile
➜ git commit -m "add 90MB bigfile"
➜ git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 85.71 KiB | 306.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: warning: See http://git.io/iEPt8g for more information.
remote: warning: File bigfile is 85.83 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: warning: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To github.com:yeshan333/git-lfs-prune-repo.git
   e3baf1a..f057313  master -> master

好,接下来我们假装这个仓库有很多文件,不知道具体是那个文件让 Git 仓库的体积突然变大,导致 clone 很慢

标签:文件,git,objects,--,仓库,Git,LFS,瘦身
From: https://www.cnblogs.com/sikongji-yeshan/p/18081523

相关文章

  • git worktree学习
    转自:https://blog.csdn.net/qq_35067322/article/details/1215514691.介绍当在一个仓储下,在A分支编译时,是不能切到B分支上工作的,只能等着A编译完成,很影响效率。所以可以使用worktree命令新建一个工作分支。步骤1:在A分支上编译中,使用以下命令新建一个目录。gitworktreeadd.......
  • git diff 实战 2k1000 抽补丁
    问题:客户需要在源码基础上适配屏幕,所以想使用git. 过程:gitconfig--globaluser.namexxxgitconfig--globaluser.emailxxx@foxmail.comgitinitgitstatusgitcommit-m"xxx" 我的操作     使用git抽取一个补丁。 首先需要有一个基准,也即是......
  • docker安装gitlab
    查看是否已安装docker列表yumlistinstalled|grepdocker安装dockeryum-yinstalldocker启动dockersystemctlstartdocker查看docker服务状态(标绿展示:activerunning)systemctlstatusdocker再在docker上安装gitlab安装gitlab镜像,并准备挂载目录docker安装gitlab不......
  • git 操作
    删除分支删除本地分支gitbranch-dfeature_a删除线上分支gitpushorigin--deletefeature_a简写:gitpushorigin:feature_a强制同步线上分支到本地//同步线上代码gitfetch--all 强制重置本地分支gitreset--hardorigin/分支忽略本地文件更改......
  • 又发现一款免费好用的 AI 写代码神器,好用到爆,GitHub Copilot 可以扔了。。
    大家好,我是R哥。近两年AI太火了,风靡全球,AI编程工具也没有落下,比如微软的GitHubCopilot,还有阿里的通义灵码,连JetBrains系列工具都逼出了自家的AI功能。大家知道我是效率狂人,同样也是工具狂人,之前给大家分享了不少开发神器,其中也不乏国内的优秀选手,不是我吹,在某些方面,国......
  • [npm] npm打包/运行时,报:"95% emitting CompressionPlugin ERROR Error: error:030801
    1问题描述环境信息windows10node:v20.11.1>node--versionv20.11.1vue:2.6.12[dependencies]"vue":"2.6.12""vue-count-to":"1.0.13""vue-cropper":"0.5.5""vue-meta":&q......
  • ubuntu系统Jenkins + Gitlab 集成 实现CI\CD (配置前后端)
    官网地址:Linux首先配置jdk17的环境,jenkins依附于java安装gitaptinstallgit更新aptupdate安装jdk17aptinstallopenjdk-17-jdkvim/etc/profileexportJAVA_HOME=/usr/local/java/exportJRE_HOME=$JAVA_HOME/jreexportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib......
  • git diff 查看文件修改提示“new mode 100644”和“old mode 100755”(使用 vscode 查
    使用vscode查看不出差异通过gitgui或者通过gitbash查看文件内容并没有修改,出现这个问题的原因是修改了文件的权限,文件的filemode发生了变化,比如执行了chmod命令。解决办法:切换到项目的根目录,执行如下命令,忽略filemode的变化即可gitconfig--addcore.filemodefa......
  • git 使用教程
    0写在前面首先需要在电脑下载安装git,具体步骤不再赘述。1配置命令查看密钥cd~/.ssh若显示无法找到该文件则当前电脑没有ssh密钥,需要创建新的sshkey。注:在Windows系统下的位置即为“C:\Users[用户名]”文件夹。生成密钥ssh-keygen-trsa-C"[email protected]......
  • Git命令简介
    Git命令简介Git中文官方文档1.区域Workspace:工作区;Index/Stage:暂存区,事实上只是一个文件,保存提交到文件列表的信息;Repository:仓库区(本地仓库区),包含提交的所有版本数据;Remote:远程仓库,简单看作本地仓库和远程仓库的交互;2.提交#提交文件到indexgitaddfilename #......