git maintenance 是什么
git maintenance 是统一的大仓维护入口:把仓库注册进维护列表后,由系统调度器按小时或按天执行一组后台任务(提交图、预取、增量打包、垃圾回收等),替代「每个仓库各写一份 cron 手动跑 gc」的做法,注册列表全局可查、可停止。
基本信息
| 注册 | git maintenance register 把当前仓库加入全局维护列表 |
|---|---|
| 手动执行 | git maintenance run --task=<任务名> |
| 启动调度 | git maintenance start(Linux/macOS 写 cron,Windows 用计划任务) |
| 停止调度 | git maintenance stop 暂停调度,保留注册 |
| 常用任务 | gc、commit-graph、prefetch、incremental-repack、pack-refs |
典型使用场景
- 单机多仓库:活跃仓库统一托管维护,不用逐仓配 cron。
- 大仓提速:commit-graph 与 incremental-repack 让日志、合并基计算更快。
- 预取远端:prefetch 在空闲时段把远端更新拉到隐藏引用,正式操作更流畅。
- 替代手工 gc:把清理与打包交给调度,避免忘记或重复执行。
- 迁移过渡:原来散落的 cron gc 统一收编到维护列表,方便审计。
常用示例
常用示例
git maintenance register # 把当前仓库纳入全局维护列表
git maintenance run --task=commit-graph # 重建提交图(加速日志与合并基)
git maintenance run --task=incremental-repack # 增量合并对象包
git maintenance run --task=prefetch # 预取远端更新到隐藏引用
git maintenance start # 交给系统计划任务按调度执行
git maintenance stop # 暂停调度(保留注册)任务对照
| 任务 | 作用 | 关注点 |
|---|---|---|
| gc | 清理不可达对象并打包 | 与保留期 pruneExpire 相关 |
| commit-graph | 预计算提交图 | 加速 log 与 merge-base |
| prefetch | 后台预取远端更新 | 占用网络与远端负载 |
| incremental-repack | 增量合并对象包 | 磁盘 IO 较多 |
| pack-refs | 引用打包成 packed-refs | 引用很多时收益大 |
执行时间选在空闲时段;机械盘或 CI 容器里跑后台维护可能拖慢构建,先评估环境再启用,start 之前规划好各仓库频率。任务也可以手动单跑(run --task=),调试或临时维护时不必等调度窗口。