1

我有一个使用 git lfs 作为内容管理器的场景。

我的计划是做一个类似的测试:

                                            master   images    combined
init lfs                                     (1)
create images branch                                   (2)
add 2 files                                            (3)
edit 2 files                                           (4)
edit 2 files                                           (5)
edit 2 files                                           (6)
create branch from master                                        (7)
combine images to combines as 1 commit                           (8)
delete images branch                                    -
merge combined to master                     (10)

毕竟,如果 GC 正确运行,则必须删除所有已更改的分支映像文件。

我对么?因为 lfs 的 GC 必须删除所有未引用的图像,所以分支已被删除,因此提交也必须被删除。

PS 在上述所有操作之后,项目的历史仅显示 2 次提交

更新

我删除了该项目,并在 gc 运行后删除了空间。

在此处输入图像描述

4

2 回答 2

1

是的,如果中间文件在你的 git 历史记录中没有被任何 git 引用——这是一个分支(本地或远程)或标签——引用,那么这些git-lfs文件就有资格被删除。

然而,与 git 不同的是,它在某些操作后自动进行 GC,git-lfs它不会自动执行此操作(或者至少上次我没有这样做,我已经离开循环一段时间了)。相反,您需要运行git lfs prunewhich 将删除未引用的文件。

但是请注意,因为git lfs prune它旨在恢复磁盘空间,它也可能会删除在您的 git 存储库中引用的文件的本地版本,但不会被最近的分支(前提是它们已被推送到您的主远程,所以不要仅存在于本地)。有关git lfs prune --help更多详细信息,请参阅。

高温高压

于 2017-10-20T09:57:21.410 回答
1

很可能 gitlab-ce 没有删除所有提交的引用,再试一次这个例子,但不要 mer

于 2017-10-23T12:37:25.397 回答