首页 > 解决方案 > 如何克隆包含 Git LFS 文件的存储库?

问题描述

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

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

所以我设置了目录,在里面运行git initgit lfs install然后运行git clone https://foobar.git​​. 哪个将为嵌套在我创建的目录中的 repo 创建一个目录,不是吗?不知何故,这似乎是错误的。

克隆这个 repo 需要几个小时,所以我想确信我做对了。查看GitHub 上的文档,似乎上面的命令集是正确的 - 如果您阅读了整个内容。信息位由一千个左右的单词分隔。这是这样做的方法吗?

标签: gitgit-lfs

解决方案


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无需任何设置即可自动向您显示正确的内容。


推荐阅读