Codex CLI Git 工作流完整指南(2026)— 自动 Commit、PR 描述、代码审查
Codex CLI 不只是写代码——它也能深度融入你的 Git 工作流:自动生成规范的 commit message、起草 PR 描述、执行初步代码审查。本指南涵盖所有实用场景,附可直接使用的脚本和 Git Alias。
1. 自动生成 Commit Message
手写 commit message 既费时又容易写得不规范。Codex CLI 可以分析 staged diff 并生成符合 Conventional Commits 格式的提交信息。
基础用法
# 暂存你的改动
git add -p
# 让 Codex 根据 diff 生成 commit message
git diff --staged | codex "根据以上 diff 生成一条符合 Conventional Commits 规范的 commit message。
格式:<type>(<scope>): <description>
类型:feat/fix/refactor/test/docs/ci/chore
只输出 commit message 本身,不加任何解释"
Git Alias 一键使用
# 添加到 ~/.gitconfig
[alias]
cm = "!git diff --staged | codex 'Generate a Conventional Commits message for this diff. Output only the commit message.' | git commit -F -"
# 使用
git add -p
git cm
生成多行 Commit Message(feat + 详细 body)
git diff --staged | codex "生成完整的 git commit message:
1. 第一行:<type>(<scope>): <简短描述>(不超过 72 字符)
2. 空行
3. Body:用 bullet points 说明具体改动(中文)
4. 如果有 breaking change,加 BREAKING CHANGE: 说明
只输出 message,不加任何前缀"
feat(新功能)、fix(Bug 修复)、refactor(重构,不影响功能)、test(测试)、docs(文档)、ci(CI/CD 配置)、chore(构建工具、依赖更新)
2. 自动起草 Pull Request 描述
Codex 可以分析一个 branch 相对 main 的所有提交,自动生成结构化的 PR 标题和正文。
手动生成 PR 描述
# 获取相对 main 的提交列表
git log main..HEAD --oneline > /tmp/commits.txt
# 获取完整 diff
git diff main..HEAD > /tmp/diff.txt
# 生成 PR 描述
codex "根据以下提交记录和代码变更,生成一份规范的 Pull Request 描述(Markdown 格式):
提交记录:
$(cat /tmp/commits.txt)
## 要求:
- 标题:简洁的 PR 标题(不超过 72 字符)
- ## Summary:2-3 句话说明这个 PR 做了什么
- ## Changes:分类列出具体改动(使用 checkbox 格式 - [ ])
- ## Testing:描述测试方法
- ## Notes:任何注意事项(可选)"
GitHub CLI 集成(一键创建 PR)
# 安装 GitHub CLI(如果还没装)
brew install gh # macOS
# 生成 PR 描述并直接创建 PR
PR_BODY=$(git log main..HEAD --oneline | codex "Generate a GitHub PR description in Markdown with Summary, Changes, and Testing sections")
gh pr create --title "$(git log -1 --pretty=%s)" --body "$PR_BODY"
GitHub Actions 自动化(在 push 时自动起草 PR)
# .github/workflows/auto-pr.yml
name: Auto Draft PR
on:
push:
branches-ignore: [main, master]
jobs:
draft-pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate PR description
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
npm install -g @openai/codex
COMMITS=$(git log origin/main..HEAD --oneline)
DIFF=$(git diff origin/main..HEAD --stat)
PR_BODY=$(echo "$COMMITS\n\n$DIFF" | codex exec "Generate a PR description with Summary, Changes (checkboxes), and Testing sections")
echo "PR_BODY<<EOF" >> $GITHUB_ENV
echo "$PR_BODY" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Create draft PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr create --draft --title "$(git log -1 --pretty=%s)" --body "$PR_BODY" || true
3. AI 辅助代码审查
Codex 可以在你提交或 push 之前,对改动进行初步的自动化审查,发现潜在问题。
本地预提交审查
# 审查 staged 改动
git diff --staged | codex "对以下代码变更进行审查,重点检查:
1. 潜在的 Bug 或逻辑错误
2. 安全问题(SQL 注入、XSS、敏感数据泄露等)
3. 性能问题(N+1 查询、不必要的重复计算等)
4. 代码可读性(变量命名、函数长度、注释)
5. 遗漏的边界情况或错误处理
每个问题标注严重级别(🔴高/🟡中/🟢低)"
Pre-commit hook 自动审查
# .git/hooks/pre-commit
#!/bin/bash
echo "Running Codex code review..."
REVIEW=$(git diff --staged | codex exec "Review for critical bugs and security issues. Output 'PASS' if no critical issues, or list specific problems with line references.")
if echo "$REVIEW" | grep -q "CRITICAL\|SECURITY"; then
echo "❌ Codex found critical issues:"
echo "$REVIEW"
echo "Use 'git commit --no-verify' to bypass (not recommended)"
exit 1
fi
echo "✅ Codex review passed"
设置 hook 可执行权限:chmod +x .git/hooks/pre-commit
PR 代码审查(GitHub Actions)
# .github/workflows/ai-review.yml
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: AI Review
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
npm install -g @openai/codex
DIFF=$(git diff origin/main..HEAD)
REVIEW=$(echo "$DIFF" | codex exec "Review this PR diff for bugs, security issues, and code quality. Format as GitHub Markdown with specific file:line references.")
gh pr comment ${{ github.event.pull_request.number }} --body "## 🤖 Automated Code Review\n\n$REVIEW"
4. 分支管理与 Merge 辅助
生成分支命名建议
codex "我要做以下改动:修复用户登录时 token 过期不跳转的问题。
建议一个规范的 git 分支名(格式:<type>/<short-description>,全小写,用连字符)"
# 输出示例:fix/auth-token-expiry-redirect
分析 Merge Conflict
# 当出现 merge conflict 时
cat conflicted-file.ts | codex "这个文件有 git merge conflict(<<<<<<< / ======= / >>>>>>> 标记)。
分析两个版本的改动,解释各自的意图,然后给出合并建议。
如果可以安全合并,直接输出合并后的代码。"
Rebase 辅助
# 在 interactive rebase 前分析提交
git log main..HEAD --oneline | codex "分析以上提交记录,建议如何整理(squash 哪些、reword 哪些、保留哪些),给出 git rebase -i 需要的操作序列"
5. .codexignore — 保护 Git 敏感文件
# 在项目根目录创建 .codexignore
cat > .codexignore << 'EOF'
# Git 内部文件(不应被 Codex 修改)
.git/
# 敏感配置
.env
.env.local
.env.production
secrets/
credentials/
# 大型二进制文件
*.jpg *.png *.gif *.ico *.woff *.woff2
dist/
build/
node_modules/
EOF
6. AGENTS.md Git 相关配置
# AGENTS.md — Git 操作限制
## 允许的操作
- 读取所有源代码文件
- 修改 src/、tests/、docs/ 下的文件
- 创建新文件(不包括 .git/ 目录)
## 禁止的操作
- 不得删除 .git/ 目录
- 不得修改 .gitignore(除非明确要求)
- 不得运行 git push --force
- 不得修改 git config
## Git Commit 规范
生成 commit message 时遵循 Conventional Commits 规范。
所有提交信息使用英文。
7. 完整 Git 工作流自动化脚本
以下脚本将代码审查、Commit Message 生成、提交三步合为一个命令,适合日常开发使用。
#!/bin/bash
# codex-git-workflow.sh — 完整的 AI 辅助 Git 工作流
set -e
# 1. 检查是否有 staged 文件
if ! git diff --cached --quiet; then
echo "No staged changes. Use 'git add' first."
exit 1
fi
# 2. AI 代码审查
echo "🔍 Running AI code review..."
REVIEW=$(git diff --staged | codex exec "Review for bugs and security issues. Output PASS or list critical issues.")
if echo "$REVIEW" | grep -qi "CRITICAL\|SECURITY"; then
echo "❌ Issues found:"
echo "$REVIEW"
read -p "Continue anyway? (y/N) " yn
[[ "$yn" != "y" ]] && exit 1
fi
# 3. 生成 commit message
echo "📝 Generating commit message..."
COMMIT_MSG=$(git diff --staged | codex exec "Generate a Conventional Commits message. Output only the message.")
echo "Suggested: $COMMIT_MSG"
read -p "Use this message? (Y/n) " yn
if [[ "$yn" == "n" ]]; then
read -p "Enter commit message: " COMMIT_MSG
fi
# 4. 提交
git commit -m "$COMMIT_MSG"
echo "✅ Committed: $COMMIT_MSG"
设置脚本可执行权限:chmod +x codex-git-workflow.sh
8. 常见问题
Codex CLI 可以自动生成 git commit message 吗?
可以。运行以下命令即可获得规范的提交信息:
git diff --staged | codex "根据以上 diff 生成一条符合 Conventional Commits 规范的 commit message,只输出 message 本身"
也可以配合 git alias 一键使用,参见上方「Git Alias 一键使用」章节。Codex 会分析 diff 内容,自动判断 commit 类型(feat/fix/refactor 等)并生成准确的描述。
Codex CLI 可以帮我写 PR 描述吗?
可以。将 git log 和 git diff 输入给 Codex,让它生成结构化的 PR 标题和正文(包含 Summary、Changes、Testing 章节)。在 GitHub Actions 中可以完全自动化这一流程——每次 push 到功能分支时自动起草 PR,大幅减少重复劳动。
Codex CLI 可以做代码审查吗?
可以进行自动化的初步代码审查。Codex 会分析 diff,识别潜在的 Bug、安全问题(SQL 注入、XSS 等)、性能瓶颈(N+1 查询)和代码风格问题,并给出具体建议。它不能替代人工审查,但可以在提交前帮你发现明显问题,提升代码质量。
如何防止 Codex CLI 修改 .git 或 node_modules 目录?
有两种方式:
- 在项目根目录创建
.codexignore文件(语法与 .gitignore 相同),列出 Codex 不应访问的路径,例如.git/、node_modules/、.env等。 - 在
AGENTS.md中添加禁止操作规则,例如不得删除 .git/ 目录和不得运行 git push --force,Codex 会遵循这些限制。