Repository navigation
Home
omeyang edited this page Sep 17, 2026
·
2 revisions
按分支 tip 保留压缩包、清除历史旧版本的 git 瘦身工具。面向离线部署类仓库:很多个长期保留的发布分支,每个分支带一个几百 MB 的包,历史里堆积了大量被淘汰的旧版本,.git 越来越大。Pomona 让每个分支只保留它 tip 当前的那个包,删掉该路径在历史里被淘汰的所有旧版本,跨全部分支一次完成;提交历史拓扑、分支、各分支当前的包都原样保留。
Rust 编写,提供 x86_64、ARM64 静态 musl 二进制 git-pomona,放进 PATH 即是 git pomona 子命令。目标机器只需要 git,不需要 Python,也不需要 git-filter-repo。
从 最新 Release 下载对应架构的二进制,按 安装与升级 校验后放入 PATH。
git pomona analyze /path/to/本地克隆 --auto-detect -o pomona-plan.toml # ① 只读分析,产出 plan
git pomona clean pomona-plan.toml --workdir /tmp/cleaned.git # ② 建镜像、重写历史、自检
git pomona push /tmp/cleaned.git # ③ dry-run:只打印将执行的推送
git pomona push /tmp/cleaned.git --yes # 确认后强推回远程三步之间通过文件交接,可以分别检查、分别重跑。push --yes 之前,你的本地克隆和远程都不会被改动。详见 使用指南。
| 页面 | 内容 |
|---|---|
| 安装与升级 | 下载、校验、安装、升级 |
| 使用指南 | 三个子命令的完整参数、交互模式、plan 文件格式、清理后的重新同步 |
| 工作原理与安全性 | 为什么必须重写历史、镜像如何拿到全部分支、原生重写引擎、两道自检 |
| 识别规则与 hooks | 包是怎么识别的、profile 配置文件、pre-push / post-push hooks |
| 开发与发布 | 构建、测试、源码组织、GitHub Actions 和 Wiki 维护 |
Pomona 是古罗马果园女神。奥维德《变形记》第十四卷写她「不持标枪,右手持弯曲的修枝刀,用来压制过度生长、剪去四处蔓延的枝条」。借用这一典故,为 git 仓库剪去历史里枯死的旧包,留下每根枝头当前结的果。典故来源:Ovidius, Metamorphoses XIV(拉丁原文)
项目名为 Pomona,命令为 git pomona。采用 MIT 许可证。
Pomona Wiki · Releases · 报告问题