第 03 模块 · 2 节

Codex 与 Git 命令协同

《Codex 进阶实战》03 Git 工作流集成 · 本节时长 32 分钟

Codex 负责写,Git 负责管

Codex 擅长「写代码」,但「版本管理」这件事,得你和 Git 一起把关。这一节讲 Codex 与 Git 命令怎么协同——让 Codex 的产出,稳稳地进入 Git 的可控流程。

贯穿项目file-lib 里,Codex 是「写代码的」,你是「管版本的」。每次 Codex 改完,你都要用 Git 命令审查它的产出再决定要不要提交。这一节我们用 git status / git difffile-lib 的每次改动把一道「人审关卡」——先看再提交,让 Codex 的代码都过你的眼才进仓库。

分工:Codex 写,Git 管

  • Codex:改代码、写功能
  • Git:记录改动、管理版本、控制合并

让 Codex 直接乱提交、乱合并?不行。你负责用 Git 把关它的产出。在 file-lib 里分工很清晰:

环节 谁来做 用什么
写功能代码 Codex 对话、编辑文件
看改了哪些文件 你(可让 Codex 辅助) git status
看具体改了什么 git diff
决定提交什么 git add
写提交信息 Codex(你审) git commit
推远端、提 PR git push

一句话:Codex 出力,Git 把关,你做决定。


协同的关键操作

改之前:确认干净

让 Codex 干活前,先确认工作区干净:

git status      # 看有没有未提交的改动

有未提交的,先处理,避免和 Codex 的改动混在一起。在 file-lib 里,如果上一个人(或上一个 Codex 会话)留了没提交的改动,你不清理就让新会话开工,两个会话的改动就会搅成一团,回滚都不知道是谁的。所以开工第一件事永远是 git status

改之后:查看改动

Codex 改完,先审查改动再提交:

git status          # 它改了哪些文件
git diff            # 具体改了什么

先看 git diff,再决定要不要提交——这是人把关的第一步。对 file-lib 改完 lib/date.js 后,git diff 会告诉你它到底加了哪几行、有没有顺手动了不该动的 lib/string.js。看清楚了,提交才有底气。


让 Codex 帮你用 Git

Codex 也能帮你操作 Git(在你授权下)。比如:

帮我看看 git status,整理一下这次要提交的改动

或让它写提交信息:

帮我根据这次改动,按 Conventional Commits 写一条提交信息

Codex 辅助 Git 操作 + 人决定提交什么。对 file-lib,你可以让 Codex 干这种「整理活」:

我先不提交。帮我:
1. git status 看下工作区有哪些改动
2. 把改动按「本次 cli 功能相关 / 无关」分两组
3. 给相关的那组,按 Conventional Commits 拟一条提交信息
    先别提交,等我确认。

Codex 帮你把改动理清、把信息拟好,但「提交不提交」始终握在你手里。


一个「协同」完整流程

1. git status(确认干净)
2. 让 Codex 干活
3. git status + git diff(人审查改动)
4. 认可 → 提交;不认可 → 让它改
5. git push → 提 PR

核心:Codex 的每一次改动,都过一遍 Git 的「审查关卡」。给 file-lib 跑一遍:

git status                    # 开工前确认干净
# 让 Codex 在 lib/date.js 加 leapYear 函数
git status                    # 看改了哪些文件
git diff lib/date.js          # 看具体加了几行
# 认可 → 
git add lib/date.js
git commit -m "feat(date): 新增 leapYear 闰年判断"

每一步 Codex 的改动都过了你的眼,才进了仓库。


关键原则

  • 先看再提交git diff 过了眼,才 git add/commit
  • 别让 Codex 乱提交:提交什么、提交信息,人把关
  • 改动可回退:提交后出问题,git log 能找到、能回滚

Git 是 Codex 改动的「安全网」——用好它,AI 再大胆也不怕。

练习给 file-lib 的改动走一遍 Git 审查关卡。①三步走:先 git status 确认工作区干净;让 Codex 在 lib/date.js 加一个 leapYear 函数后,用 git status + git diff 审查它到底改了哪些文件、加了几行;认可后再 git add + git commit(提交信息用 Conventional Commits 格式)。②怎么判断做对了:改动只涉及 lib/date.js(没顺手动其他模块)、你亲自看过 git diff 才提交、提交后 git status 干净。③卡住了怎么办:如果 Codex 改完你不想提交的部分,用 git checkout -- <file> 撤销那个文件;如果提交信息没按规范,让 Codex 按 feat(scope): 描述 重拟。

常见坑:git add . 把所有改动一把提交

和 Codex 协作时,很多人图省事用 git add . 把工作区所有改动一股脑提交。问题来了:Codex 可能这次会话改了三件事,其中一件是废的、一件是别人改的、只有一件是你要的。git add . 全给提交了,想拆开重来都难。

避坑办法:只提交「本次功能相关」的文件,逐个加,别用 .

git add lib/date.js test/date.test.js   # 只加相关的两个文件
git status                                # 提交前再核对一次
git commit -m "feat(date): 新增 leapYear"

提交前用 git status 再核对一遍「要提交的清单」,确认没有夹带。如果发现有不该提交的,git reset <file> 把它移出暂存区。宁可按文件逐个加,也不贪快用 git add . 提交清单的干净,比提交速度重要得多。


小结

  1. 分工:Codex 写代码,Git 管版本,人把关
  2. 改前 git status,改后 git diff 审查
  3. 提交什么、提交信息,人决定,Codex 辅助
  4. 核心:Codex 每步改动都过 Git 审查关卡

下一节,讲冲突解决与变更管理。