Git LFS(Large File Storage)是一个专门用于处理大文件的 Git 扩展工具。通常情况下,Git 很擅长管理文本文件,比如代码,但对于图片、视频、音频等大文件管理效率并不好。
# 为什么需要 Git LFS?
如果你直接用 Git 管理大文件:
- **仓库变得巨大**:每次提交大文件都会存储完整的副本,Git 仓库变得越来越大。
- **克隆速度缓慢**:新用户克隆项目时,必须下载整个历史记录中所有的大文件,下载慢且占用空间。
# Git LFS 是怎么解决的?
Git LFS 不会直接把大文件存进仓库,而是将这些大文件存储在服务器上,仓库中只保留一个小小的**指针文件**(pointer),告诉你:“这个大文件存放在另一个地方,你去那里取吧!”
也就是说:
- 仓库变小了,只保存文件引用(几百字节大小)。
- 大文件被单独存储,只有需要时才下载。
# 使用 Git LFS 的流程
1. **安装并启用 Git LFS**
```bash
git lfs install
```
2. **标记需要管理的大文件类型**
假设你想让 Git LFS 管理所有的图片:
```bash
git lfs track "*.png"
git lfs track "*.jpg"
```
3. **添加 `.gitattributes` 文件并提交**
```bash
git add .gitattributes
git commit -m "Track images using Git LFS"
```
4. **正常提交大文件**
```bash
git add my-photo.png
git commit -m "add large photo"
git push origin main
```
当你推送时,Git LFS 会自动把真实的文件上传到 Git LFS 服务器,而 Git 仓库中仅保留一个小小的指针文件。
# 什么时候该用 Git LFS?
- 当你的仓库有大于几十 MB 的二进制文件,比如图片、视频、音频。
- 当项目频繁修改大文件时,使用 Git LFS 能有效减少仓库膨胀。
---
# 一个形象的比喻
想象你家很小,你的书房(Git 仓库)放不下太多大件家具。
使用 Git LFS 相当于你把这些大件家具都放进了租来的仓库(Git LFS服务器),你家里只放了小纸条,上面写着:“沙发在仓库A,冰箱在仓库B”。
每次你想使用这些大件家具时,再去对应的仓库取回来即可,不用把家塞得满满当当的。
这样你的家就能保持干净整洁,而不用因为大件物品而变得拥挤不堪。
---
以上就是 Git LFS 的通俗介绍,希望对你有所帮助!