用途:g2g 是 Go 实现的 CLI,用于自我记录堆叠式分支并把它们投射到 GitHub,也可作为 Graphite 数据的可选读取来源;Graphite 并非权威,g2g 图里记录的分支结构优先。
命令面:顶层为自身栈与类 git 动词,如 status、doctor、create、adopt、track、untrack、delete、fold、rename、up/down/top/bottom、restack、pull、prune、push、submit、land。跨 Git 之外工具的操作放在该工具名下,如 g2g github status|adopt|link|unlink|retarget|comment 与 g2g graphite adopt|mirror。命令名一次迁移完成且无别名:graph 现为 status,sync 为 pull,track --stack 为 adopt,import 为 graphite adopt / github adopt,mirror 为 graphite mirror。
发现与运行:任务开始先复用已解析命令,否则本地依次尝试 g2g --version、gt2gh --version,取第一个成功者并固定使用;两者都失败则需用户提供二进制或安装。退出码:0 成功或无操作,2 失败,3 中途停止,1 仅来自 doctor(表示发现问题)。
关键能力:pull 与 pull request 无关,它拉取远程并快进或拒绝已分叉的 base,从不调用 gh;status 离线,基于本地 ref 与 g2g/pull-requests.json 中的“last seen”PR 观察,永不 fetch;prune 遗忘已落地的分支记录,默认不删分支,--delete-branches 才本地删除;push 是预览优先的发布逃生口,仅 --apply 会执行一次原子 push;land 自下而上把栈落地到 trunk,不等待 CI。
限制:仓库工作前应先读 README 与相关 design-docs;Graphite 只读,仅 graphite mirror 写入 Graphite。资料未提供具体安装命令、版本、收费、平台与价格信息。