我想弄清楚如何使用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
这当然是令人敬畏的和重点。但是如果需要访问完整文件呢?如何下载?
我很乐意直接回答这个问题或链接到正确的文档。
答案 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-media
,git-annex
,git-fat
....我没有深入研究这些选项,因此无法提出建议。
回答3
如果文件未使用git-bigstore
上传,则会使用git lfs
推送该文件,并且您的git存储库中有二进制文件。但是,如您在问题4 中所述,使用git
上传了您的。
回答4
在其本地计算机上安装git lfs
之后,存储库的其他用户只需键入git lfs
即可引入您使用git lfs pull
推送的二进制文件。