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

打印 上一主题 下一主题

主题 577|帖子 577|积分 1731

熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久,追踪的文件越来越多,git 存储的 objects 数量会极其巨大,每次从远程仓库 git clone 的时候都会墨迹很久。假如我们不小心 git add 了一个体积很大的文件,且 git push 到了远程仓库,那么我们 git clone 的时候也会很慢。
看一下 GitHub 上的 microsoft/vscode 仓库,都有 九万多个 commit 了,可想而知 objects 的数量应该很恐怖,实验 clone 一下(一百多万个 objects):


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

瘦身背景:错误把大文件 push 到了远程仓库
我们可以通过以下命令或者 du -mh 查看 Git 仓库的体积,git-count-objects
  1. # 查看仓库体积情况
  2. git count-objects -vH
复制代码
示例:可以看到当前仓库体积只有 12.00 KiB 左右

如今我们模仿错误的将大文件上传到远程 Git 仓库的动作:
  1. # 1、生成一个 90MB 大小的文件,Github 做了限制超过 100 MB 大小的文件建议使用 LFS,直接拒绝 push
  2. ➜ dd if=/dev/zero of=bigfile bs=90MB count=1
  3. # 2、将这个文件 push 到远程仓库
  4. ➜ git add bigfile
  5. ➜ git commit -m "add 90MB bigfile"
  6. ➜ git push origin master
  7. Enumerating objects: 4, done.
  8. Counting objects: 100% (4/4), done.
  9. Delta compression using up to 16 threads
  10. Compressing objects: 100% (3/3), done.
  11. Writing objects: 100% (3/3), 85.71 KiB | 306.00 KiB/s, done.
  12. Total 3 (delta 0), reused 0 (delta 0)
  13. remote: warning: See http://git.io/iEPt8g for more information.
  14. remote: warning: File bigfile is 85.83 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
  15. remote: warning: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
  16. To github.com:yeshan333/git-lfs-prune-repo.git
  17.    e3baf1a..f057313  master -> master
复制代码
好,接下来我们假装这个仓库有很多文件,不知道详细是那个文件让 Git 仓库的体积突然变大,导致 clone 很慢
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

笑看天下无敌手

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

标签云

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