跳到主要内容

Codex 版本管理实战:使用 Git 与 Fork 精准回滚项目

在使用 Codex 生成词根词缀网站的过程中,很多人会遇到一个共性问题:一开始生成的效果挺满意,但继续叠加新功能后,代码越改越跑偏,想回到最初的状态却无从下手。Codex 自带的"撤销"只能回退上一次操作,一旦回退,后面的改动就无法正常应用了。要真正管好项目版本,需要引入 Git 进行版本管理,并配合 Codex 提供的 Fork(分叉)功能,实现任意节点的跳转与回滚。

本文完整演示从修改样式、提交版本、测试搜索功能、生成新主题,到用 Git 回滚代码、用 Fork 切换对话、配置 AGENTS.md 自动提交的全过程。

一、目标​

  • 学会在 Codex 中把每次改动提交到本地 Git 仓库,形成带编号的版本节点;
  • 学会使用 Codex 的 Fork 功能,从任意一次对话派生新会话;
  • 掌握用 git reset 把代码回滚到指定提交;
  • 通过 AGENTS.md 配置文件,让 Codex 在每次变更后自动执行 git commit。

二、修改样式并提交第一个版本​

先对网站做两处样式调整:选中"标记学"按钮,把背景色改成与主色调一致的颜色,并加上边框颜色;再调整一下字体。这些修改在 Codex 的预览页面中即时可见,但此时真实代码还没有任何变化。

确认无误后,在对话框中点击发送并确定,Codex 开始处理。处理完成后可以看到两处修改已经生效。

Codex 完成按钮颜色与字体两处样式修改后的页面效果

如果对这次修改不满意,可以直接点击"撤销",刷新页面就回到修改前的效果;再点"重新应用"又能恢复。但撤销的局限很明显——回退之后后续改动无法正常应用,所以更推荐用 Git 管理版本。

三、测试搜索功能并修正需求​

继续测试网站的搜索:输入 bi,发现没有以 bi 开头的词根也被查出来了。点进详情可以看到,右侧释义中包含了 bi,所以被匹配到。我们希望搜索只依据词根词缀本身,而不是右侧释义。

这类功能性需求变更不适合用"注释"方式修改,需要在对话框里直接描述需求,让 Codex 修改搜索逻辑;样式部分则仍可用注释方式调整。修改完成后,通过 Codex 内置浏览器打开页面(注意选择 Codex 浏览器,选 Chrome 会打开新网页),再次搜索 bi,结果只剩词根词缀匹配的条目。

修正搜索逻辑后输入 bi 只返回词根词缀匹配结果

四、把变更存入 Git 仓库​

Codex 内置了 Git,不熟悉命令也能操作。点击左侧找到"环境信息"→"变更",分支处会显示未暂存的文件,这就是刚才的改动。点击提交或推送,填写提交信息"搜索功能",再点提交,暂存区就清空了。

想验证的话,点击切换到底部打开命令行,输入 git status,会提示位于 master 分支、没有文件要提交;输入 git log 可以看到每次提交的信息和对应的编号,按 q 退出。这个编号就是后续回滚的依据。

终端中 git log 显示带提交编号的历史记录

五、按设计图生成新主题并提交​

如果对整体样式不满意,可以回到对话框,附上一张设计图截图,要求"保留原始功能,生成截图所示效果"。Codex 询问是否允许访问时点击允许,处理完成后通过 Codex 浏览器或谷歌浏览器查看,生成效果与设计图一致。

按设计图截图生成的新主题页面效果

生成完成后同样提交:点击变更分支,三个文件处于未暂存状态,填写提交信息"浅绿色主题"后提交。再用终端执行 git log --oneline,可以看到三条提交记录,最新的排在最上面。

git log --oneline 显示三条提交记录

六、用 Fork 分叉切换对话节点​

假设现在想回到最初的主题。直接用 Git 回滚代码是可以的,但有个隐患:之前的对话仍留在当前会话里,Codex 会默认你已使用这些改动,后续修改还会在此基础上进行,既浪费 token,也难以保证样式一致。

解决办法是使用对话中的"分叉"按钮。点击后有两个选项:

  • 派生到本地项目:接着当前对话,仍使用原来的本地项目目录(workspace 目录);
  • 派生到新的工作树:创建一个 worktree,项目路径变为 Codex 目录下的 worktree/版本号/项目名。

两者内容一致,区别只在文件目录。可以右键选择"在 Finder 中显示"对比路径,或在终端输入 pwd 查看当前路径。由于目录不同,修改其中一个不会影响另一个,版本控制更清晰。

派生到新工作树后终端 pwd 显示的新目录路径

注意:切换到之前的对话节点后,代码本身并不会跟着变,仍是修改后的代码,需要配合 Git 回滚。

七、用 git reset 回滚代码​

在终端先执行 git log 查看所有版本,找到要回到的那次提交,复制它的编号,然后执行:

git reset <提交编号>

回车后代码即回滚到该版本。刷新页面,网站回到最初的主题。

执行 git reset 后刷新页面回到最初主题

至此,通过 Git 加 Fork 分叉,就能在任意版本间跳转。但前提是每次修改后都手动提交,操作略显繁琐。

八、用 AGENTS.md 实现自动提交​

在对话框里要求"每次变更后执行 git commit"只能对当前会话生效,其他会话不会遵守。更通用的做法是在项目根目录添加配置文件。

用本地编辑器(如 Cursor)打开项目目录,新建 AGENTS.md,写入通用要求,例如:项目名称、技术栈、核心要求(修改完成后使用 git commit 提交并添加描述信息)、界面风格设置、代码可读性要求等。保存后,在 Codex 的变更面板中可以看到这个未暂存文件,填写提交信息"创建 AGENTS.md 文件"并提交。

AGENTS.md 文件提交后暂存区清空

九、归档与恢复对话​

不再需要的派生会话可以点击"归档对话"隐藏,但归档不等于删除。在设置页面底部可以找到"已归档对话",需要时点击取消归档即可恢复;确认不需要时再点删除,才会彻底移除。

小结​

本文围绕 Codex 项目的版本管理,走通了完整链路:修改样式并提交 → 测试搜索并修正需求 → 按设计图生成主题 → 用 Fork 分叉切换对话节点 → 用 git reset 回滚代码 → 用 AGENTS.md 规范自动提交。核心要点有三条:每次改动后及时提交,让每个版本都有编号可追溯;回滚代码的同时用 Fork 切换对话,避免上下文污染;把通用规则沉淀到 AGENTS.md,让提交行为跨会话生效。掌握这套组合,代码再多也能从容回滚。

课程推荐

想系统学习这门课程?

你已阅读完本文。需要更完整的知识体系,可以继续了解「Vibe Coding 实战课程」。

查看课程详情