用JFrog CLI清理你的Git LFS仓库

Git LFS和JFrog CLI

Git已经成为源代码控制的行业标准。但是,它不是为有效地存储二进制文件而设计的在Git存储库中存储大型二进制文件能迅速充气,使其反应迟缓。这就是GitLFS开始发挥作用了。Git LFS是一个Git扩展,旨在通过将大型二进制文件的存储卸载到外部文件服务器(如JFrog Artifactory)来容纳大型二进制文件,该服务器与Git存储库本身是分离的。人工支持Git LFS存储库以多种方式优化使用大文件和其他二进制资源,包括性能、安全性和可靠性。2022世界杯阿根廷预选赛赛程

访问我们的知识库了解如何安装Git LFS与Artifactory在5分钟内工作

然而,事情就有点棘手了。这些大型二进制文件仍然会在Artifactory存储库中占用大量空间。Git LFS存储整个文件,这意味着每当一个大文件被更改时,即使是轻微的更改,整个文件都会被重新存储,并与同一文件的所有旧版本一起存储。这些文件版本可能会堆积起来,并可能很快耗尽存储空间。JFrog CLI提供了一个解决方案。

JFrog命令行git-lfs-clean命令,它可与Artifactory一起使用,允许您快速轻松地从JFrog Artifactory Git LFS存储库中清理这些不必要的和过时的文件,为其他工件释放宝贵的磁盘空间。继续阅读,了解这是如何工作的。

Git LFS Clean行动指挥

例如,我们有一个名为“my-project”的Git存储库。这个项目有一个主分支,一个开发分支,以及一些特性和发布分支。对这些分支的每次提交都包含构建结果:一些二进制文件,它们存储在Artifactory Git LFS存储库中,称为“my-project-lfs”。这个存储库变得非常大,需要清理。我们所需要做的只是简单地导航到“my-project”的本地克隆,确保所有远程分支都是最新的,然后运行以下CLI命令:

Jfrog rt GLC

这将删除所有不在当前任何远程分支中的构建结果文件,只保留最近推送到所有项目分支的二进制文件,为您留下一个干净的存储库。

Git LFS和JFrog CLI

有什么选择吗?

默认情况下,JFrog CLI将在当前工作目录中检查Git存储库。如果存储库在其他地方,路径可以手动指定:

Jfrog rt GLC ./projects/my-project

方法自动检测Artifactory存储库的位置Git回购的LFS设置.要重写此行为,可以直接传递repo名称:

Jfrog rt GLC—repo=my-project-lfs

缺省情况下,只保留当前远程分支中的LFS文件。这可以自定义,以允许保存来自任何Git引用组合的文件。例如,只保留master分支中的文件:

Jfrog rt GLC——refs=refs/remotes/origin/master

更有可能的是,你会想要保存所有分支的文件,以及所有标签:

Jfrog rt GLC——refs= ' refs/remotes/*,refs/tags/* '

如果未指定此选项,则默认行为是仅保留所有远程分支。这相当于以下内容:

Jfrog rt GLC—refs= ' refs/remotes/* '

在运行清理之前,JFrog CLI会要求确认文件是否真的应该被删除。要关闭此确认,请传递安静的选择。要运行测试并确保确实删除了正确的文件,请通过排练选择。JFrog CLI会列出它要删除的文件,但并没有真正从磁盘上删除任何东西。

消失意味着消失(几乎)

请记住,Git LFS Clean命令从项目的Git LFS源删除文件,而不是从本地缓存删除文件。从这个服务器上删除的文件对于任何使用这个项目的人来说都是不可用的。不要使用这个工具,除非你确定它删除的文件不会丢失。如果不小心删除了错误的文件,通常可以从人造垃圾桶

清洁前更新

当使用Git LFS Clean命令时,JFrog CLI使用本地Git存储库的当前状态来决定需要保留什么。如果存储库位于源文件之后,则可能会意外地清理新文件。为了避免这种情况,请确保在执行该命令之前已正确获取所有分支。

我们去打扫吧

因此,如果您发现自己的存储空间不足,可能是时候清理Git LFS存储库了。只需要一个简单的JFrog CLI命令。

寻找更有效的CLI命令?了解更多JFrog CLI