【问题标题】:How do I clone a repository that includes Git LFS files?如何克隆包含 Git LFS 文件的存储库?
【发布时间】:2019-10-10 12:17:04
【问题描述】:

在我的 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。这将为嵌套在我创建的目录中的 repo 创建一个目录,不是吗?不知何故,这似乎是错误的。

克隆这个 repo 需要几个小时,所以我想确信我做对了。看着documentation on GitHub,似乎上面的命令集是正确的——如果你读了整件事的话。信息位由一千个单词左右分隔。是这样的吗?

【问题讨论】:

    标签: git git-lfs


    【解决方案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 会自动向您显示正确的事情,而无需任何设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2013-11-04
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      相关资源
      最近更新 更多