GWZ:让多仓库管理像 Monorepo 一样丝滑
如果你也深受 Git Submodule 的折磨——那种动不动就 detached HEAD,还得在无数个仓库里手动 commit 切换状态的痛苦,那你一定要看看这个刚出来的黑马工具 GWZ。状态回溯: 它通过“Snapshots”和“commit markers”在根目录下记录工作区状态。这意味着你可以像快照一样恢复整个工作区的状态,而不是在几十个 repo 里乱撞。
指令对齐: 虽然它不是完全复刻 Git,但
批量操作: 那个
隔离性: 它利用
下一篇
Rust 性能压榨实战 →
作者是个前 Google 工程师,显然是被 Monorepo 的开发体验“养刁了”。他写这个工具的核心逻辑其实非常暴力且有效:他不想改变现有的多仓库(multi-repo)结构,但他想要一种能像操作单个大仓库一样的掌控感。
我实测了一下这个逻辑,它最硬核的地方在于:
gwz status、gwz diff、gwz add 这些命令的逻辑高度对齐 Git。你不需要重新学习一套语法,上手成本极低。forall 命令简直是救命稻草,可以直接在选定的成员仓库里跑命令,再也不用写那种又长又臭的 shell 循环了。.git/info/exclude 把成员仓库从根仓库里隐藏掉,从底层规避了误操作把成员 repo 给搞乱的风险(这对于我们这种追求系统稳定性的安全工程师来说很关键)。最让我觉得有点意思(甚至有点离谱)的是,这个工具的很多特性竟然是 Claude 和 Gemini “自作主张”加进去的。比如它居然自带 --json/jsonl 输出模式,说是为了让 LLM 读起来更舒服。这种“AI 辅助开发工具,最后反过来服务 AI”的闭环挺有意思。
不过得提醒一下,这玩意儿是用 Rust 写的(虽然作者自嘲写得一般,但 Rust 的性能和类型安全在处理这种文件系统操作时确实有优势)。目前虽然还处于“有点粗糙”的阶段,但测试覆盖率已经搞到了 82% 左右,稳定性比那些乱写的 Python 脚本强得多。
如果你现在的项目结构是一堆乱七八糟的子仓库,折腾得心力交瘁,建议直接去翻翻它的文档看下具体的 workflow,这可能是目前性价比最高的解决方案了。
https://owebeeone.github.io/gwz-cli/