我想弄清楚如何使用git-lfs.我使用gitlab EE服务器.
也许我错过了一些东西,但我没有找到任何关于git-lfs的文档,除了非常简短的教程介绍"track"命令和可爱的1分钟视频.
例如,我在repo中添加并跟踪一个3.7GB的tar文件,然后推送它:
git lfs track "*.tar" cp /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
如本视频(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-media
,git-annex
,git-fat
,git-bigstore
....我没有深入研究这些选项,所以无法提出建议.
答案3
如果文件未使用git lfs
它上传,则会被推送使用,git
并且您的git存储库中有一个二进制文件.但是,git lfs
正如您在问题4中所说的那样上传了您的.
回答4
存储库的其他用户在安装git lfs
到本地计算机上之后,只需键入git lfs pull
以引入您使用的二进制文件git lfs
.