git lfs 管理大文件

最后更新于:2022-04-02 02:53:42

[TOC] > [教程](https://zzz.buzz/zh/2016/04/19/the-guide-to-git-lfs/) ## 概述 全名叫 "Git Large File Storage" - 对二进制文件进行额外的管理 ![](https://upload-images.jianshu.io/upload_images/1059995-670f795346b86292?imageMogr2/auto-orient/strip|imageView2/2/w/1000/format/webp) ## 下载 ubuntu ``` sudo apt-get install git-lfs ``` ## 安装 ``` git lfs install ``` ## 配置 使用`git lfs track`追踪需要使用 Git LFS 管理的文件。如: ``` git lfs track "*.psd" ``` 也可以手动编辑 Git 仓库根目录下的`.gitattributes`文件,如: ``` *.psd filter=lfs diff=lfs merge=lfs -text ``` ## 命令 ``` # 查看当前使用 Git LFS 管理的匹配列表 git lfs track # 使用 Git LFS 管理指定的文件 git lfs track "*.psd" # 不再使用 Git LFS 管理指定的文件 git lfs untrack "*.psd" # 查看当前 Git LFS 对象的状态 git lfs status # 枚举目前所有被 Git LFS 管理的具体文件 git lfs ls-files # 检查当前所用 Git LFS 的版本 git lfs version # 针对使用了 LFS 的仓库进行了特别优化的 clone 命令,显著提升获取 # LFS 对象的速度,接受和 `git clone` 一样的参数。 [1] [2] git lfs clone https://github.com/user/repo.git ``` ## 场景 ### 迁移已有的 git 仓库使用 git lfs 管理 ``` # 重写 master 分支,将历史提交中的 *.zip 都用 git lfs 进行管理 git lfs migrate import --include-ref=master --include="*.zip" # 重写所有分支及标签,将历史提交中的 *.rar,*.zip 都用 git lfs 进行管理 git lfs migrate import --everything --include="*.rar,*.zip" ``` >[warning] 重写历史后的提交需执行 git commit --force,请确认在本地的操作合适无误后再进行提交 ### 只推送仓库本身,而不推送任何 LFS 对象 如果当前仓库启用了 LFS,而还需要将该仓库备份至其他不支持 LFS 的 git 服务器 ``` git push --no-verify backup master ``` ### 获取当前 commit 下包含的 LFS 对象的当前版本 如果起初获取代码时,没有一并获取 LFS 对象,而随后又需要这些被 LFS 管理的文件时,可以单独执行 LFS 命令来获取并签出 LFS 对象 ``` git lfs fetch git lfs checkout # 或 git lfs pull ``` ### 仅获取指定目录下的 LFS 对象 配置 LFS 下载对象时仅包含`images`文件夹: ``` git config lfs.fetchinclude 'images/**' ```
';