Git-LFS:大文件也有了版本管理
关于 GitHub 的大小限制
GitHub 限制存储库中允许的文件大小。 如果尝试添加或更新大于 50 MB 的文件,您将从 Git 收到警告。 更改仍将成功推送到仓库,但您可以考虑删除提交,以尽量减少对性能的影响。
GitHub 阻止超过 100 MB 的推送。
要跟踪超出此限制的文件,必须使用 Git Large File Storage (Git LFS)。 更多信息请参阅“关于 Git Large File Storage”。
![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/3525e6131050417a49d4a36c399e3551.png#pic_center)
Git LFS:(Large File Storage)把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替文件的存在,通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能;
如果您选择在仓库存档中包含 Git LFS 对象,则每次下载这些存档都会计入您帐户的带宽使用量。 每个帐户每月免费获得 1 GB 的带宽,您可以付费获得额外用量。 更多信息请参阅“关于存储和带宽使用”和“管理 Git Large File Storage 的计费”。
**核心思想:**把需要进行版本管理、但又占用很大空间的那部分文件独立于 Git 仓库进行管理。从而加快克隆仓库本身的速度,同时获得灵活的管理 LFS 对象的能力
安装 Git Large File Storage
Mac
-
导航到 git-lfs.github.com 并单击 Download(下载)。 也可以使用包管理器安装 Git LFS:
如果安装用于 Homebrew 或 MacPorts 的 Git LFS,请跳至步骤 6。 -
在计算机上,找到并解压缩下载的文件。 -
打开 Terminal(终端)。 -
将当前工作目录更改为您下载并解压缩的文件夹。 $ cd ~/Downloads/git-lfs-1.X.X
**注:**在 cd 后面使用的文件路径取决于您的操作系统、下载的 Git LFS 版本以及保存 Git LFS 下载的位置。 -
要安装该文件,请运行以下命令: $ ./install.sh
> Git LFS initialized.
**注:**您可能必须使用 sudo ./install.sh 来安装文件。 -
验证安装成功: $ git lfs install
> Git LFS initialized.
-
如果未看到表示 git lfs install 成功的消息,请联系 GitHub Support。 确保包含操作系统的名称。
Windows
-
导航到 git-lfs.github.com 并单击 Download(下载)。 **提示:**有关安装 Windows 版 Git LFS 的其他方法的更多信息,请参阅此入门指南。 -
在计算机上,找到下载的文件。 -
双击文件 git-lfs-windows-1.X.X.exe,其中 1.X.X 替换为您下载的 Git LFS 版本。 打开此文件时,Windows 将运行安装程序向导以安装 Git LFS。 -
打开 Git Bash。 -
验证安装成功: C:\Users\FLY>git lfs install
Git LFS initialized.
C:\Users\FLY>
-
如果未看到表示 git lfs install 成功的消息,请联系 GitHub Support。 确保包含操作系统的名称。
Linux
-
导航到 git-lfs.github.com 并单击 Download(下载)。 **提示:**有关安装 Linux 版 Git LFS 的其他方法的更多信息,请参阅此入门指南。 -
在计算机上,找到并解压缩下载的文件。 -
打开 Terminal(终端)。 -
将当前工作目录更改为您下载并解压缩的文件夹。 $ cd ~/Downloads/git-lfs-1.X.X
**注:**在 cd 后面使用的文件路径取决于您的操作系统、下载的 Git LFS 版本以及保存 Git LFS 下载的位置。 -
要安装该文件,请运行以下命令: $ ./install.sh
> Git LFS initialized.
**注:**您可能必须使用 sudo ./install.sh 来安装文件。 -
验证安装成功: $ git lfs install
> Git LFS initialized.
-
如果未看到表示 git lfs install 成功的消息,请联系 GitHub Support。 确保包含操作系统的名称。
配置 Git Large File Storage
安装 [Git LFS] 后,需要将其与仓库中的大文件相关联。
Mac
如果仓库中存在要用于 GitHub 的现有文件,则需要先从仓库中删除它们,然后在本地将其添加到 Git LFS。 更多信息请参阅“将仓库中的文件移动到 Git LFS”。
如果有引用的 Git LFS 文件未成功上传,您将收到一条错误消息。 更多信息请参阅“解决 Git Large File Storage 上传失败”。
-
打开 Terminal(终端)。 -
将当前工作目录更改为要用于 Git LFS 的现有仓库。 -
要将仓库中的文件类型与 Git LFS 相关联,请输入 git lfs track ,后跟要自动上传到 Git LFS 的文件扩展名。 例如,要关联 .psd 文件,请输入以下命令: $ git lfs track "*.psd"
> Adding path *.psd
要与 Git LFS 关联的每个文件类型都需要添加 git lfs track 。 此命令将修改仓库的 .gitattributes 文件,并将大文件与 Git LFS 相关联。 **注意:**我们强烈建议您将本地 .gitattributes 文件提交到仓库中。
- 依赖与 Git LFS 关联的全局 .gitattributes 文件,可能会导致在参与其他 Git 项目时发生冲突。
- 在存储库中包含 .gitattributes 文件允许创建复刻或新克隆的人员使用 Git LFS 更轻松地进行协作。
- 在存储库中包含 .gitattributes 文件允许 Git LFS 对象选择性地包含在 ZIP 文件和压缩包存档中。
-
将文件添加到与关联的扩展名相匹配的仓库: $ git add path/to/file.psd
-
提交文件并将其推送到 GitHub: $ git commit -m "add file.psd"
$ git push
您会看到一些有关文件上传的诊断信息: > Sending file.psd
> 44.74 MB / 81.04 MB 55.21 % 14s
> 64.74 MB / 81.04 MB 79.21 % 3s
Windows
如果仓库中存在要用于 GitHub 的现有文件,则需要先从仓库中删除它们,然后在本地将其添加到 Git LFS。 更多信息请参阅“将仓库中的文件移动到 Git LFS”。
如果有引用的 Git LFS 文件未成功上传,您将收到一条错误消息。 更多信息请参阅“解决 Git Large File Storage 上传失败”。
-
打开 Git Bash。 -
将当前工作目录更改为要用于 Git LFS 的现有仓库。 -
要将仓库中的文件类型与 Git LFS 相关联,请输入 git lfs track ,后跟要自动上传到 Git LFS 的文件扩展名。 例如,要关联 .psd 文件,请输入以下命令: $ git lfs track "*.psd"
> Adding path *.psd
要与 Git LFS 关联的每个文件类型都需要添加 git lfs track 。 此命令将修改仓库的 .gitattributes 文件,并将大文件与 Git LFS 相关联。 **注意:**我们强烈建议您将本地 .gitattributes 文件提交到仓库中。
- 依赖与 Git LFS 关联的全局 .gitattributes 文件,可能会导致在参与其他 Git 项目时发生冲突。
- 在存储库中包含 .gitattributes 文件允许创建复刻或新克隆的人员使用 Git LFS 更轻松地进行协作。
- 在存储库中包含 .gitattributes 文件允许 Git LFS 对象选择性地包含在 ZIP 文件和压缩包存档中。
-
将文件添加到与关联的扩展名相匹配的仓库: $ git add path/to/file.psd
-
提交文件并将其推送到 GitHub: $ git commit -m "add file.psd"
$ git push
您会看到一些有关文件上传的诊断信息: > Sending file.psd
> 44.74 MB / 81.04 MB 55.21 % 14s
> 64.74 MB / 81.04 MB 79.21 % 3s
Linux
如果仓库中存在要用于 GitHub 的现有文件,则需要先从仓库中删除它们,然后在本地将其添加到 Git LFS。 更多信息请参阅“将仓库中的文件移动到 Git LFS”。
如果有引用的 Git LFS 文件未成功上传,您将收到一条错误消息。 更多信息请参阅“解决 Git Large File Storage 上传失败”。
-
打开 Terminal(终端)。 -
将当前工作目录更改为要用于 Git LFS 的现有仓库。 -
要将仓库中的文件类型与 Git LFS 相关联,请输入 git lfs track ,后跟要自动上传到 Git LFS 的文件扩展名。 例如,要关联 .psd 文件,请输入以下命令: $ git lfs track "*.psd"
> Adding path *.psd
要与 Git LFS 关联的每个文件类型都需要添加 git lfs track 。 此命令将修改仓库的 .gitattributes 文件,并将大文件与 Git LFS 相关联。 **注意:**我们强烈建议您将本地 .gitattributes 文件提交到仓库中。
- 依赖与 Git LFS 关联的全局 .gitattributes 文件,可能会导致在参与其他 Git 项目时发生冲突。
- 在存储库中包含 .gitattributes 文件允许创建复刻或新克隆的人员使用 Git LFS 更轻松地进行协作。
- 在存储库中包含 .gitattributes 文件允许 Git LFS 对象选择性地包含在 ZIP 文件和压缩包存档中。
-
将文件添加到与关联的扩展名相匹配的仓库: $ git add path/to/file.psd
-
提交文件并将其推送到 GitHub: $ git commit -m "add file.psd"
$ git push
您会看到一些有关文件上传的诊断信息: > Sending file.psd
> 44.74 MB / 81.04 MB 55.21 % 14s
> 64.74 MB / 81.04 MB 79.21 % 3s
常用命令
基本使用
git lfs track "*.pdf"
git lfs untrack "*.pdf"
git lfs track
git lfs status
git lfs ls-files
git lfs version
git lfs clone url/ssh
只获取仓库本身,而不获取任何 LFS 对象
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/user/repo.git
git -c filter.lfs.smudge= -c filter.lfs.required=false clone https://github.com/user/repo.git
只推送仓库本身,而不推送任何 LFS 对象
git push --no-verify backup master
获取当前 commit 下包含的 LFS 对象的当前版本
git lfs fetch
git lfs checkout
git lfs pull
获取指定时间的版本
git config lfs.fetchrecentcommitsdays 7
场景
迁移已有的 git 仓库,需要使用 git lfs 管理
git lfs migrate import --include-ref=master --include="*.zip"
git lfs migrate import --everything --include="*.rar,*.zip"
注意:
重写历史后的提交需执行 git commit --force 如有迁移至 git lfs 前的仓库的多份拷贝,其他拷贝可能需要执行 git reset --hard origin/master 来重置其本地的分支,注意执行 git reset --hard 命令将会丢失本地的改动。
参考链接
安装 Git Large File Storage
https://zhuanlan.zhihu.com/p/146683392
https://gitee.com/help/articles/4235#article-header5
|