笑看天下无敌手 发表于 2024-5-14 18:37:05

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

熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久,追踪的文件越来越多,git 存储的 objects 数量会极其巨大,每次从远程仓库 git clone 的时候都会墨迹很久。假如我们不小心 git add 了一个体积很大的文件,且 git push 到了远程仓库,那么我们 git clone 的时候也会很慢。
看一下 GitHub 上的 microsoft/vscode 仓库,都有 九万多个 commit 了,可想而知 objects 的数量应该很恐怖,实验 clone 一下(一百多万个 objects):
https://img2024.cnblogs.com/other/1432456/202403/1432456-20240318214521065-399065924.png
https://img2024.cnblogs.com/other/1432456/202403/1432456-20240318214521329-1145793659.png
这里微微记录下 Git 仓库瘦身和使用 Git LFS 进行大文件存储管理的几个常规操纵。
Git 仓库瘦身

瘦身背景:错误把大文件 push 到了远程仓库
我们可以通过以下命令或者 du -mh 查看 Git 仓库的体积,git-count-objects:
# 查看仓库体积情况
git count-objects -vH示例:可以看到当前仓库体积只有 12.00 KiB 左右
https://img2024.cnblogs.com/other/1432456/202403/1432456-20240318214521674-590021037.png
如今我们模仿错误的将大文件上传到远程 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..f057313master -> master
好,接下来我们假装这个仓库有很多文件,不知道详细是那个文件让 Git 仓库的体积突然变大,导致 clone 很慢
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Git 仓库瘦身与 LFS 大文件存储