git-lfs文件存储在哪里?


70

我试图弄清楚如何使用git-lfs。我使用gitlab EE服务器。

也许我错过了一些东西,但是除了介绍“ track”命令和1分钟可爱视频的非常简短的教程之外,我找不到关于git-lfs的任何文档。

例如,我在回购中添加并跟踪一个3.7GB的tar文件,然后将其推送:

git lfs track "*.tar"
cp <a folder>/a.tar .
git add a.tar 
git commit -m "add a.tar"
git push origin master

问题1:在此过程结束时,a.tar是否已上传到gitlab服务器上?目前尚不清楚,因为“ add”和“ commit”命令花费了一些时间(也许还不够长,所以我想知道在这段时间内是否上载了3.7GB),但是推送根本没有花费任何时间(第二)。

问题2:如果文件已上传到服务器上,在哪里?显然与回购不在同一地点(这就是重点)。我问是因为正在备份服务器,所以我需要知道是否使用git-lfs要求我以任何方式进行更新。

问题3:如果未上传文件,这是否意味着存储库的其他用户将在添加文件的原始计算机上获得指向该文件的链接?有没有办法将其更改为服务器上的位置?(回到问题2)

问题4:克隆存储库后,确实不存在完整的3.4G文件,“仅”包含以下内容的文本文件:

version https://git-lfs.github.com/spec/v1
oid sha256:4bd049d85f06029d28bd94eae6da2b6eb69c0b2d25bac8c30ac1b156672c4082
size 3771098624

这当然很棒,而且很重要。但是,如果需要访问整个文件怎么办?如何下载呢?

我很乐意直接回答这个问题或链接到正确的文档。

Answers:


42

答案1该视频所述(1:27),当您推送由其跟踪的文件时,该文件git lfs将被拦截并放置在其他服务器上,从而在git存储库中留下一个指针。如您在问题4中提供的参考中所见,这对您很有效。

答案2 这有点棘手。阅读的文档git lfs smudge,我们有:

从标准输入读取Git LFS指针文件,并将相应的大文件的内容写入标准输出。如果需要,请从Git LFS端点下载文件的内容。该参数(如果提供)仅用于进度条。

git lfs终端可以从输出中找到git lfs env。我的“端点”是我的存储库下(但不在其中)的文件夹,这使我认为GitLab在我们的帐户空间中的服务器上创建了一个git存储库来存储二进制文件。

就是说,我不知道您将如何进行备份。GitHub提供的git lfs服务器“尚未处于生产就绪状态”,因此需要您自己进行一些设置工作,以便将二进制文件上传到您管理的服务器上。如果备份这些文件是一个优先事项,你不希望使用的一个实现方式(Amazon S3的,等等),你可以尝试另一种二进制文件存储系统,用git的作品,如git-mediagit-annexgit-fatgit-bigstore....我尚未深入研究这些选项,因此无法提出建议。

答案3 如果未使用上传文件git lfs,则应使用推送,git并且您的git仓库中将有一个二进制文件。但是,您的上载使用的git lfs是您在问题4中所说的。

答案4 您存储库中的其他用户git lfs在本地计算机上安装后,只需键入即可输入git lfs pull您使用推送的二进制文件git lfs


2
问题1:令人困惑,因为在视频上,文件是在“ git push”期间上传的。在我这边,“ git push”只需几分之一秒。似乎没有上传任何东西。“ git lfs push origin master”显然不起作用。问题4:“ git lfs pull”显示“ Git LFS:(2个文件中的0个)0 B / 3.85 GB”,但没有执行其他操作。文件未下载。
文斯(Vince)2015年

因此,文件不是在新的克隆中下载的吗?然后,您的设置可能有问题。我不知道该向您介绍什么,因为它按视频中的说明工作。
houtanb 2015年

11
不是OP,而是git lfs pull我一直在寻找的东西。:) 谢谢!(git-lfs的新手)
Zack,2016年

2
也是git-lfs的新功能。git lfs pull为我工作。但是现在如果我想将它们转换回指针怎么办?会git lfs push工作吗?
文森特

对于问题4,从git版本2.15.0开始,常规git clone命令具有内置的LFS支持。
暮光之城
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.