git-lfs文件存储在哪里?

时间:2015-12-09 14:31:46

标签: git git-lfs

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

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

例如,我在一个仓库中添加并跟踪一个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服务器上?目前还不清楚“添加”和“提交”命令需要花费一些时间(可能不够长,让我不知道3.7GB是否在那段时间内上传)但推动并没有花费任何时间(一小部分)秒)。

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

问题3 :如果文件没有上传,这是否意味着repo的其他用户将获得添加文件的原始机器上的文件的链接?有没有办法将其更改为服务器上的某个位置? (回到问题2)

问题4 :克隆了repo后,确实没有完整的3.4G文件,“只是”一个带有内容的文本文件:

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

这当然是令人敬畏的和重点。但是如果需要访问完整文件呢?如何下载?

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

1 个答案:

答案 0 :(得分:33)

回答1 正如在this video(在1:27中)中所解释的那样,当您按下git lfs跟踪的文件时,它会被拦截并放置在不同的服务器上,并在您的git存储库中留下指针。正如您在问题4中提供的参考文献中所看到的,这对您有用。

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

  

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

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

那就是说,我不知道你是如何支持的。 GitHub提供了一个git lfs server,它不会处于生产就绪状态,&#34;因此,您需要做一些工作来进行设置,以便将二进制文件上传到您管理的服务器。如果备份这些文件是一个优先事项,并且您不想使用implementations之一(Amazon S3等),您可以尝试另一个使用git的二进制文件存储系统,例如{{ 1}},git-mediagit-annexgit-fat ....我没有深入研究这些选项,因此无法提出建议。

回答3 如果文件未使用git-bigstore上传,则会使用git lfs推送该文件,并且您的git存储库中有二进制文件。但是,如您在问题4 中所述,使用git上传了您的。

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