Git LFS(Git Large File Storage)
主要用于解决向 git 仓库中提交二进制大文件的存储问题。
基于 git 的版本管理机制,当频繁的改动并提交二进制大文件至仓库时,会导致仓库大小迅速膨胀,从而带来仓库拉取和提交变慢等问题。
Git LFS
根据设置规则,将指定类型的文件版本管理放在 LFS 大文件服务器上,git 仓库中仅使用 index 索引指向 LFS 大文件服务器上的对应文件。
1. 安装 Git LFS
官网下载并安装:
Mac 电脑可以使用 Homebrew 或 MacPorts 快速安装:
- Homebrew:
brew install git-lfs
- MacPorts:
port install git-lfs
安装完成后,执行如下命令初始化 LFS:
git lfs install
2. 在 Git 项目中设置 LFS
如我们需要将 .psd
、.zip
、.dll
、.exe
和.node
后缀类型的二进制文件设置为使用 lfs。执行如下命令:
git lfs track "*.psd" "*.zip" "*.exe" "*.dll" "*.node"
执行之后,将在项目当前目录创建文件(若没有) .gitattributes
,在其中写入或更新相关后缀类型的设置如下:
*.psd filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.exe filter=lfs diff=lfs merge=lfs -text *.node filter=lfs diff=lfs merge=lfs -text
记得将该文件添加到 git 仓库中,执行命令:git add .gitattributes
3. 在 gitlab 项目设置中开启 LFS
具体到开关在如下设置路径 Settings-General--Visibility, project features, permissions-Git Large File Storage
,参见如下图示。
如以上设置顺利,后续提交 .psd
、.zip
、.exe
和.node
后缀类型的大文件至 git,则会使用 LFS 进行存储。提交至 gitlab 后,该文件后会有 LFS
标识。
注意:如果本地没有安装 Git LFS 且只 clone 了仓库本身,git pull 只能获取仓库本身内容,存储在 LFS 上的内容只有版本索引信息
4. 迁移仓库中已有的文件至 LFS
Git LFS 只会在设置之后追踪新生成的指定文件,对于已有的文件则可以使用 git lfs migrate
命令进行迁移。相关方法与步骤参考如下:
# 查看当前 git 项目中大于 1M 的 TOP10 文件(全部提交历史记录的所有文件之和) git lfs migrate info --above="1MB" --everything --top 10 # 迁移已有的 node 类型文件 git lfs migrate import --include="*.node,*.dll,*zip" --everything # 查看 lfs 管理的文件列表。如有匹配到相关文件,则可以在执行结果中看到 # 使用 force 命令强制让远端仓库同步变更,需要有 force 权限才行 git push --force
5. Git LFS 常用命令参考
- 使用 Git LFS 管理指定类型的文件:
git lfs track "*.psd"
- 不再使用 Git LFS 管理指定类型的文件:
git lfs untrack "*.psd" && git rm --cached "*.psd"
- 查看当前项目中使用 Git LFS 管理的匹配列表:
git lfs track
- 枚举目前所有被 Git LFS 管理的具体文件:
git lfs ls-files
- 查看当前 Git LFS 对象的状态:
git lfs status
- pull LFS 文件:
git lfs pull
- 查看 Git LFS 的版本:
git lfs version
6. 总结
对以上主要内容点小结如下:
- 安装:所有用户都应从官网下载并安装 Git LFS
- 配置:使用
git lfs track
命令配置要使用 LFS 的文件类型;在 gitlab 设置中也要打开开关 - 迁移:使用
git lfs migrate
可以迁移已有文件 - 注意事项
- 所有用户都需要安装 LFS,否则拉取的仓库中,存储在 LFS 服务器上的文件在本地的内容只有索引信息
- more…
相关参考链接: