1

当我在 Windows 中运行 git lfs clone somerepository 时,我得到以下输出

Cloning into 'somerepository'...
remote: Counting objects: 24028, done.
remote: Compressing objects: 100% (5003/5003), done.
remote: Total 24028 (delta 7376), reused 23762 (delta 7265)
Receiving objects: 100% (24028/24028), 7.12 MiB | 3.86 MiB/s, done.
Resolving deltas: 100% (7376/7376), done.
Git LFS: (57 of 57 files) 1.57 GB / 1.57 GB

最后一行表示 git 分几批下载了所有文件(而不是像 git pull 那样一次下载 1 个文件),而且速度非常快。

相反,在 linux 和 mac 中,相同的命令只执行前 6 个步骤,而不执行最后一个步骤,将所有 LFS 跟踪的文件仅作为指针。如果我执行 fetch/checkout/pull,git 会同时下载一个文件的内容,而且速度非常慢。我比较了不同 Linux/Windows/Mac 系统之间的所有配置,并且行为与最新版本的 git 和 git-lfs 相同。

我想知道 git lfs clone 运行的最后一个命令是什么,以及如何在 Linux 和 Mac 上手动或自动触发它。

谢谢

4

1 回答 1

0

它在 Gerrit 服务器上按预期工作:

> git lfs clone https://USER@GERRIT-SERVER/a/REPOSITORY
Cloning into 'REPOSITORY'...
remote: Counting objects: 5, done
remote: Finding sources: 100% (5/5)
remote: Total 929 (delta 0), reused 929 (delta 0)
Receiving objects: 100% (929/929), 151.10 KiB | 0 bytes/s, done.
Resolving deltas: 100% (275/275), done.
Checking connectivity... done.
Git LFS: (2 of 2 files) 1.77 MB / 1.77 MB

> git --version
git version 2.7.4

> git lfs version
git-lfs/1.5.3 (GitHub; linux amd64; go 1.7.4; git 23455e48)

$HOME/.gitconfig LFS 内容:

[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
于 2017-01-17T20:29:59.910 回答