git lfs原理和使用

如果我们用git管理的项目中出现了一些大文件, 同时若其数量比较多, 而且更新又比较频繁, 那么当首次clone该项目时, 就会不可避免地将这些大文件的当前版本和历史所有版本的文件都下载下来, 虽然你很可能用不到这些历史文件, 但是却不得不为它们所占用的额外空间买单.

git lfs(large file storage)就很好地解决了这一问题. 通过将大文件替换为小指针的方式, 当你真正需要到这些大文件的时候, 它才会从本地或者远端的lfs缓存中下载这些大文件.

git lfs拥有本地lfs缓存和远端的lfs存储仓库.

当你add一个文件时, git lfs用一个指针替换了其中的内容, 并将文件存储在本地的git lfs缓存中

当你push一个文件时, 除过普通的文件会被正常push, 这些lfs文件也会被从本地lfs缓存传输到远端lfs存储仓库

当你checkout一个包含lfs 指针的提交的时候, 那么指针文件就将被本地lfs缓存中的备份, 或者lfs存储库中的备份替换

该指针当然也是一个文件, 内容如

version https://git-lfs.github.com/spec/v1
oid sha256:5b62e134d2478ae0bbded57f6be8f048d8d916cb876f0656a8a6d1363716d999
size 285

里面的第一行是一个指针文件规范URL, 第二行是对象id, 第三行是文件有多少字节.

如何下载git lfs

可以通过网站 https://git-lfs.github.com/ 下载tar包, 比如git-lfs-linux-amd64-v2.9.0.tar.gz, 解压后运行

chmod 755 install.sh
sudo ./install.sh
git lfs install

如何在项目中使用git lfs

你可以使用普通的git clone命令来clone项目, 如果该项目中含有lfs文件, git会在clone的结尾帮你监测出所有的git lfs文件. 当然你也可以用git lfs clone来加速, 并且git会等到checkout完成后在批量下载所有需要的lfs文件. 这可以显著减少http请求和进程的数量.

同样git pull命令也是可以正常使用, 如果lfs文件有丢失, 那么可以通过git lfs pull来下载当前丢失的lfs文件内容.

可以使用git lfs track指令来指定追踪指定的文件为lfs文件, 指定方式与.gitignore方式相同, 支持对单个或者通配的多个文件指定. 对于使用通配符指定时, 需要加上"", 比如git lfs track "*.so", 否则该通配符会被shell扩展. 使用untrack可以取消对某文件的追踪. 追踪的文件名单在.gitattributes中可以找到. git lfs ls-files 可以查看所有的lfs文件, git lfs status可以查看当前add的lfs文件

同样地, git push就可以提交并推送lfs内容到远端仓库.

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Git LFS(Large File Storage)可以更好地管理大文件,以避免将它们包含在Git仓库中导致仓库过大的问题。下面是使用Git LFS的一些基本步骤: 1. 安装Git LFS:首先,您需要在您的计算机上安装Git LFS。您可以从Git LFS的官方网站(https://git-lfs.github.com/)下载适用于您操作系统的安装程序,并按照安装指南进行安装。 2. 配置Git LFS:安装完成后,您需要告诉Git LFS要跟踪和管理哪些大文件。在您的Git仓库目录中,运行以下命令配置Git LFS: ``` git lfs install ``` 3. 跟踪大文件:要跟踪某个大文件,您可以使用以下命令: ``` git lfs track <path_to_large_file> ``` 这将在.gitattributes文件中添加一个规则,指定要使用Git LFS来处理指定路径下的大文件。 4. 提交和推送:一旦您完成了对大文件的跟踪,您可以像正常提交和推送其他文件一样提交和推送您的更改。Git LFS会自动将大文件上传到Git LFS服务器,并在提交时替换为Git LFS的指针。 5. 克隆仓库和获取LFS对象:当您克隆带有Git LFS的仓库时,您需要获取LFS对象,即实际存储在仓库之外的大文件。在克隆后的仓库目录中,运行以下命令获取LFS对象: ``` git lfs fetch ``` 6. 检出文件:一旦您获取了LFS对象,您可以使用以下命令将文件检出到您的工作目录: ``` git lfs checkout ``` 这将从Git LFS服务器下载大文件并将其放置在正确的位置。 请注意,如果您只想下载特定的大文件而不是克隆整个仓库,可以使用`git lfs pull`命令,后跟特定的文件路径: ``` git lfs pull --include "<path_to_large_file>" ``` 这样,您就可以使用Git LFS来管理和下载大文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

门豪杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值