我以为git lfs migrate
重写了存储库的历史记录,以便将指定的大文件保存在 LFS 中。这意味着存储库应该变得更小,因为它不直接包含大文件的所有版本。然而,当我跑步时
git lfs migrate import --include="test-data/**" --include-ref=refs/heads/master
中的所有文件test-data/
目录被替换为如下所示的文件:
version https://git-lfs.github.com/spec/v1
oid sha256:5853b5a2a95eaca53865df996aee1d911866f754e6089c2fe68875459f44dc55
size 19993296
并且 .git 文件夹变得两倍大(400MB 到 800MB)。我很困惑。什么是git lfs migrate doing
?
编辑:我做到了迁移后清理 https://github.com/git-lfs/git-lfs/wiki/Tutorial
git reflog expire --expire-unreachable=now --all
git gc --prune=now
跑步前du
。之后,大部分空间被这些文件夹使用:
414M .git/对象
398M .git/lfs
唯一的问题是二进制文件的原始 git-objects 仍然在.git
文件夹,因为您没有对它们进行垃圾收集。
您应该遵循git lfs 迁移教程 https://github.com/git-lfs/git-lfs/wiki/Tutorial#migrating-existing-repository-data-to-lfs这解释了:
上面成功地将预先存在的 git 对象转换为 lfs
对象。但是,常规对象仍然保留在 .git 中
目录。这些最终都会被git清理掉,但是要清理
他们立即起来,运行:
git reflog expire --expire-unreachable=now --all
git gc --prune=now
运行后,您的 .git 应该具有相同的大小,但如果您进入它,您应该会看到objects
现在应该比迁移之前小得多lfs
保留其余部分。
更好的消息是,现在当其他开发人员/应用程序克隆该存储库时,他们只需下载objects
目录,然后将获取only他们检查的“大文件”,而不是整个历史记录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)