更新时间:2023-07-25 GMT+08:00

Git LFS使用

背景信息

  • 代码托管支持Git LFS(Large File Storage,大文件存储)协议,可以把音乐、图片、视频等指定的任意大文件资源存储在Git仓库之外,对于使用者而言,类似在操作一个完整的Git仓库,非常方便。通过将大文件存储在Git原有的数据结构之中,可以减小Git仓库本身的体积,使克隆Git仓库的速度加快,也使得Git不会因为仓库中充满大文件而损失性能。
  • 当您要上传的文件单个超过100M时,需要使用Git LFS。
  • 使用操作包含以下内容:

安装Git LFS

不同操作系统的安装方法如下表所示。

表1 Git LFS安装方法

操作系统

安装方法

Windows

安装不低于Git 1.8.5版的Git客户端,然后在命令行中执行:

git lfs install

Linux

在命令行中执行:

$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
$ sudo apt-get install git-lfs
$ git lfs install

macOS

首先安装Homebrew软件包管理工具,然后在命令行中执行:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install git-lfs
$ git lfs install

配置追踪文件

配置追踪文件方法如下图所示。

表2 追踪文件配置方法

场景

方法

追踪所有后缀名为“.psd”的文件

追踪所有后缀名为“.psd”的文件:

git lfs track "*.psd"

追踪单个文件

追踪单个文件:

git lfs track "logo.png"

查看已追踪的文件

查看已追踪的文件,可以通过git lfs track,或通过查看“.gitattributes”文件,获取详情:

$ git lfs track
Listing tracked patterns
    *.png (.gitattributes)
    *.pptx (.gitattributes)
$ cat .gitattributes
*.png filter=lfs diff=lfs merge=lfs -text
*.pptx filter=lfs diff=lfs merge=lfs -text

提交大文件

提交代码时需要将“.gitattributes”文件也提交到仓库,提交完成后,执行git lfs ls-files命令可以查看 LFS 跟踪的文件列表。

$ git push origin master
Git LFS: (2 of 2 files)12.58 MB / 12.58 MB
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 548 bytes | 0 bytes/s, done.
Total 5 (delta 1), reused 0 (delta 0)
To <URL>
<SHA_ID1>..<SHA_ID2>  master -> master
$ git lfs ls-files
61758d79c4 * <FILE_NAME_1>
a227019fde * <FILE_NAME_2>

克隆包含Git LFS文件的远程仓库

使用git lfs clone命令克隆包含“Git LFS”文件的远程仓库到本地:

$ git lfs clone <URL>
Cloning into '<dirname>'
remote: Counting objects: 16,done.
remote: Compressing objects: 100% (12/12),done.
remote: Total 16 (delta 3), reused 9 (delta 1)
Receiving objects: 100% (16/16),done.
Resolving deltas: 100% (3/3),done.
Checking connectively...done.
Git LFS: (4 of 4 files) 0 B / 100 B