我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作

0 阅读4分钟

在 Codex 里写代码时,我希望能直接查看当前项目有哪些分支、每个分支提交了什么,再顺手检查一下工作区改动。于是做了一个开源插件 Git Branch Explorer,把这些操作放进 Codex 的右侧面板。

现在发布到了 v0.4.0,使用 MIT 许可证。它是独立开发的第三方插件,安装不需要修改 Codex 本体。

项目地址:Winlifes/codex-git-branch-explorer

先看运行效果

分支文件夹与提交历史

截图使用临时演示仓库,在本地 MCP 开发宿主中采集,未包含 Codex 窗口外框。

安装后,在 Codex 右侧面板点击 + → Git 就能打开。面板跟随 Codex 的主题和语言,支持英文、简体中文;窄面板下,分支列表会变成可以展开的抽屉。

把分支、历史和改动放在一起

分支按文件夹组织

分支名中的 / 会变成目录层级,例如:

本地分支
├─ codex
│  ├─ card-collection
│  └─ fixes
│     └─ scrollbars
├─ feature
│  └─ local-storage
└─ main

远程分支
└─ origin
   ├─ codex
   └─ main

文件夹可以展开、收起,显示下面有多少个分支;当前分支会有标记。展开状态按仓库分别保存,搜索时自动展开匹配的完整路径,清空搜索后恢复之前的状态。方向键也能在目录间移动。

点选分支只切换正在浏览的历史,不会直接 checkout。 真正切换工作区分支,要从“分支操作”中发起并确认。

每次提交都能看到时间、行数和 diff

提交列表显示提交说明、作者、短 SHA、日期时间,以及新增和删除的行数。列表中的行数统计以第一父提交为基准,根提交与空目录比较;二进制文件不计入文本增删行数。

点击提交后,可以继续看完整信息、变更文件和逐文件 diff。合并提交支持选择父提交来查看差异,也能按提交说明或作者搜索历史。

工作区里可以做常用 Git 操作

目前支持:

  • 单文件或全部暂存、取消暂存,提交已暂存内容。
  • 创建、切换和合并分支,删除已合并的本地分支。
  • git revert 生成反向提交来撤销某次提交。
  • 获取远程更新、快进拉取、普通推送和设置上游。
  • 单文件或全部撤回未暂存改动,执行前保存本地备份。

撤回未暂存改动时,会保留已经暂存的内容。部分暂存的文件恢复到暂存区版本,未跟踪文件则先备份再移除。备份位置会显示在操作结果里,方便手动恢复。

Git 写操作为什么要分两步

给界面加按钮很容易,但“我正在看哪个分支”和“工作区当前在哪个分支”并不一定相同。如果点击后立刻修改仓库,就容易操作错目标。

所以这个插件的写操作采用 预览 → 确认执行:先列出仓库、目标分支和受影响的路径,确认后再执行。预览凭据五分钟后过期,执行前还会重新核对仓库状态;如果期间文件或引用发生变化,需要重新生成预览。

实现上,前端通过 MCP Apps 与本机 Python 服务通信,后端用参数数组调用 Git。界面不接受自由拼接的 Git 命令。Git 的身份、凭据、钩子和签名配置沿用本机设置。

v0.4.0 发布前通过了 72 项 Python 测试和 9 项分支树测试。写操作测试使用临时仓库和本机裸远程,覆盖部分暂存、合并冲突、撤回备份、重复确认和预览过期等场景。

安装与目前的边界

需要 Git、Python 3.9+,以及支持 MCP 面板入口的 Codex 桌面客户端。插件运行不依赖 npm、第三方 Python 包或额外 API Key。

git clone https://github.com/Winlifes/codex-git-branch-explorer.git
cd codex-git-branch-explorer
python3 scripts/install.py

也可以从 Releases 下载 ZIP 后安装。安装器会配置本机 MCP 启动路径并注册个人插件市场。

几个实际使用时需要知道的边界:

  • 已在 macOS 验证,其他平台暂未完成验证;面板入口依赖 Codex 客户端支持。
  • 新任务尚未提供项目目录时,插件会给出消息和仓库检查提示,也可以手动选择仓库;旧任务同样可以使用。
  • “刷新”重读本地 Git 数据,远程分支要通过“获取”更新。
  • 拉取只允许快进;没有提供强制推送、强制删分支或硬重置。
  • 目前通过 GitHub 分发,尚未上架 OpenAI 官方插件目录;更新后若仍显示旧界面,可等任务结束后重新打开 Codex。

README 已提供中英文说明、截图和操作细节。如果你也在 Codex 里管理多个 Git 分支,欢迎试用,并在 Issues 反馈具体场景,尤其是不同客户端版本下的兼容性问题。