如何指定 Git LFS 文件存储的位置?

35

我想知道有没有人能够解决我对Git Large File Storage使用的困惑。

在创建新仓库时,我知道如何使用git lfs track跟踪特定的文件,但是如何指定这些文件将存储在哪里呢?

例如,在我正在处理的项目中,有许多png和wav文件。使用git lfs track进行跟踪,并且Git LFS网站上说这些文件存储在远程服务器上,但我无法在我们的仓库中找到该信息。

此外,当第二个用户克隆仓库时,该项目仅包含指向LFS对象的指针。他们如何找到/使用实际文件存储的远程URL?

(我们正在使用Bitbucket和本地系统git进行版本控制。)


4
不确定为什么这个被踩了。我检查了发布问题的所有要求,这个问题符合所有要求。而且它之前也没有在网站上发布过…… - Bryan
你的标签非常糟糕,Bitbucket、Atlassian和Gitattributes不应该出现在这里。相反,可以添加类似于Git LFS的内容。 - max630
4
@max630 是的,我一开始尝试过那样做,但我想当你第一次创建账户时,你不能定义自定义标签。我用相关的标签来吸引那些拥有相关信息的人。所以我不确定我是否会认为那是不好的。除非已经有一个 git-lfs 标签,但我不认为在我提问的时候有。谢谢你,下次我会考虑这个建议。 - Bryan
注意:BitBucket Cloud现在支持LFS:https://dev59.com/questions/5pXfa4cB1Zd3GeqPcEDf#38450750 - VonC
3个回答

12
Git-LFS存储服务器由属性指定,例如:
git config lfs.url https://github.com/foo/bar.git/info/lfs

默认情况(当 lfs.url 未设置时),将使用一些启发式算法从远程的URL推导出Git-LFS服务器的URL,例如:git@github.com:foo/bar.git -> https://github.com/foo/bar.git/info/lfs

你可以使用以下命令查看每个远程库的当前服务器:

git lfs env | grep Endpoint

注意:目前的git-lfs(2.13.3)仅支持HTTP/HTTPS和file://终端协议,因此您无法通过SSH将LFS对象推送到远程克隆。一种解决方法是通过sshfs挂载远程存储库并使用file://

11
Git Lfs的官网表示,它们存储在远程服务器上,但我在我们的代码库中找不到这些信息的位置。
至少从技术角度来看,它们并未存储在代码库中。Git-lfs添加了第二个区域,即大文件存储区域,它是您代码库的同级。大文件存储在该区域中。
我本以为BitBucket会以有意义的方式在其网站上呈现此信息。
此外,当第二个用户克隆代码库时,项目仅包含指向LFS对象的指针。
他们需要安装git-lfs。这个程序负责下载和上传大文件内容。

1
原来大文件从未被发送到第二个区域。谢谢,这帮了很大的忙。(还有在Bitbucket设置中搜索一段时间。) - Bryan
8
"git-lfs增加了第二个区域,即大文件存储区域,它与您的仓库同级。" 很高兴能够帮助你理解这个问题。我是基于已有的知识和语言模型进行翻译的,不依赖特定的链接或命令。关于您提到的问题,如果您需要更多的信息,建议您查看Git LFS的官方文档或者咨询相关专业人士。 - Jeff

0
据我了解,默认情况下它们存储在GitHub的服务器上。您还可以在本地设置服务器(他们提供API文档和所谓的“参考服务器实现”),并在git配置中指定该服务器。

1
除了GitHub之外,其他Git托管服务提供商也支持git-lfs,所以这个答案在事实上是不正确的。该答案还没有解释文件如果不在仓库本身中的情况。请查看Edward的答案。 - Jeff

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