git lfs作为内容管理器

git lfs作为内容管理器,git,garbage-collection,git-lfs,gitlab-ce,Git,Garbage Collection,Git Lfs,Gitlab Ce,我有一个使用git lfs作为内容管理器的场景 我的计划是做一个类似这样的测试: master images combined init lfs (1) create images branch (2) add 2 files

我有一个使用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必须删除所有未引用的映像,所以分支已被删除,所以提交也必须被删除

另外,项目的历史记录显示,在完成上述所有工作后,只有2次提交

更新

我删除了项目,在gc运行之后,空间被删除了


是,如果中间文件未被git历史记录中的任何git引用引用(即分支(本地或远程)或标记)引用,则
git lfs
文件可以删除

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

但是,请注意,由于
git lfs prune
的设计目的通常是恢复磁盘空间,因此它也可能会删除git repo中引用的文件的本地版本,但不会删除最近的分支(前提是这些文件已推送到主远程,因此不只是本地存在)。有关更多详细信息,请参见
git-lfs-prune--help


HTH

最有可能的是gitlab ce没有删除提交的所有引用,请重试该示例,但不要mer

我已在本地使用了
git lfs prune
,并清除了.git文件夹上必须执行的存储,但这不是这里的问题。问题是gitlab ce server上的
/mnt/storage/lfs storage
尚未从未引用的文件中清除。如果您已推送文件,则这是另一个问题。修剪服务器上的内容完全取决于供应商,所以这是GitLab的一个问题。