如何克隆包含Git LFS文件的存储库?

时间:2019-05-23 21:54:50

标签: git git-lfs

在Ubuntu系统上,我安装了Git LFS和Git,并克隆了一个存储库,该存储库的某些文件由Git LFS管理。但是除了标记文件之外,这些文件没有下载。 (直到我检查了文件大小后,我才意识到它们不是整个文件,因为它们在我的文件系统中以正确的名称显示在正确的位置。)

我从this answer看到git lfs clone已被弃用,只需git clone就可以了。但是当我尝试时,我感到困惑。我习惯只运行git clone https://foobar.git并让它设置目录。但是,除非已在每个使用它的目录中用git lfs install对其进行了初始化,否则Git LFS将无法工作。 (这就是为什么这第一次不起作用的原因,至少现在我知道。)

因此,我设置了目录,在其中运行git initgit lfs install,然后运行git clone https://foobar.git。哪个将为嵌套在我创建的目录中的仓库创建目录,不是吗?这似乎以某种方式是错误的。

要克隆此存储库将需要几个小时,因此我想确信自己做得对。看着documentation on GitHub,似乎上面的命令是正确的-如果您已阅读完整的内容。信息的比特之间相距大约一千个字。是那样做吗?

1 个答案:

答案 0 :(得分:1)

git lfs install做两件事:在本地存储库中设置钩子,并调整全局(即特定于用户的)配置以包含Git LFS正常工作所需的过滤器命令。

如果您还不在存储库中,则可能要运行git lfs install --skip-repo并让其将过滤器命令安装到~/.gitconfig中。如果您自己管理此文件,请将其添加的行复制到您管理的行中。然后,进入非Git控制的目录并运行git lfs env,并确保最后几行如下所示:

git config filter.lfs.process = "git-lfs filter-process"
git config filter.lfs.smudge = "git-lfs smudge -- %f"
git config filter.lfs.clean = "git-lfs clean -- %f"

这将向您显示您的配置已正确设置。设置完成后,只需克隆存储库,并假设在其.gitattributes文件中使用正确的条目进行设置,Git将自动拉出必要的Git LFS文件,并且在调用Git LFS时,它将安装必要的挂钩。

在Debian上,Git LFS软件包默认情况下会安装过滤器命令,因此在Ubuntu上可能也是如此。您可以检查/etc/gitconfig中的条目,如果存在这些条目,则完全不需要执行任何操作。一切正常,git lfs env会自动显示正确的内容,而无需进行任何设置。