git-lfs文件存储在哪里?

95

我正在尝试弄清如何使用git-lfs。我使用的是gitlab企业版服务器。

也许我错过了什么,但除了一个介绍“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: 如果文件已上传到服务器,则上传到哪里?显然不在与repo相同的位置(这就是重点)。我的服务器正在备份,我需要知道是否需要以任何方式更新git-lfs的使用。 问题3: 如果文件未上传,这是否意味着repo的其他用户将获取到在添加文件的原始机器上的文件链接?有没有办法更改为服务器上的位置?(回答问题2) 问题4: 克隆完repo后,确实没有整个3.4G的文件,只有一个包含内容的文本文件。
version https://git-lfs.github.com/spec/v1
oid sha256:4bd049d85f06029d28bd94eae6da2b6eb69c0b2d25bac8c30ac1b156672c4082
size 3771098624

这当然很棒,也是全部的重点。但如果需要访问完整的文件呢?如何下载?

我会很高兴得到这个问题的直接回答或指向适当文档的链接。

1个回答

53

答案 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...... 我没有深入研究这些选项,因此无法做出推荐。

第三个答案 如果文件没有使用git lfs上传,那么它将会使用git推送,并且您的git存储库中会有一个二进制文件。但是,你说你的文件是使用git lfs上传的,所以这不是问题。

第四个答案 在安装了本地机器上的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
那么在新的克隆中文件没有被下载?那么你的设置可能有问题。关于推送,因为对我来说它按视频所述工作,所以我不知道该告诉你什么。 - houtanb
13
我不是原作者,但我想说的是 git lfs pull 就是我需要的。 :) 谢谢!(我是 git-lfs 的新手) - Zack
3
对于 git-lfs 我也是新手。git lfs pull 对我有用。但现在如果我想把它们转换回指针,那该怎么办?git lfs push 行得通吗? - Vincent
1
对于问题#4,从git版本2.15.0开始,常规的git clone命令已经内置了LFS支持[内置](https://github.com/git-lfs/git-lfs/commit/6f5c9221f60bf1f58d8fcc77ed0afb4898667502)。 - Dusklight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接