阅读本栏目的独立可索引版(便于分享与搜索引擎收录)→
当 AI 助手开始替你敲 Git
Cursor、GitHub Copilot、Claude Code、CodeBuddy 等编码智能体(Agent)不仅能写代码,还会自己执行 git 命令:拉分支、提交、甚至推送。它们的效率惊人,但也可能在你没注意时提交密钥、强推覆盖、或把历史改得乱七八糟。越是把 Git 交给 AI,你越要懂得用 Git 给自己留后路——它是 AI 时代最可靠的安全网。
隔离分支:给 AI 划一片沙盒
永远不要让 AI 直接在主分支上改东西。让它从 main 切一条实验分支,再慢慢审:
git switch -c ai/experiment # AI 的所有改动都在这条分支上
# 让 Agent 在此分支上开发、提交
# 你确认没问题后,再合并回 main
git switch main
git merge ai/experiment
原则:main 受保护,AI 只在隔离分支上折腾;合并前由人拍板。很多团队的约定是 feature/*、ai/*、agent/* 这类前缀分支禁止直接 push main。
挡住密钥:.gitignore 是第一道防线
AI 经常为了「跑起来」而生成 .env、凭据文件或本地配置,然后顺手提交——这是密钥泄露最高发的场景。先把 .gitignore 写扎实,让 Git 在源头就拒绝跟踪它们:
# .gitignore 关键行
.env
.env.*
*.local
credentials.json
secrets/
提交前再用 git diff --cached 检查暂存区,确认没有密钥混进去;更稳妥的做法是加 pre-commit 钩子(如 git-secrets、gitleaks)自动扫描。一旦密钥已 push,立刻吊销并轮换,仅靠 git rm 删不掉历史里的明文。
提交前 git diff:肉眼审一遍 AI 的产出
AI 的改动量大、速度快,别直接 git add -A 全收。先看清它到底动了什么:
git status # 哪些文件被改/新增
# 工作区与暂存区的差异(AI 还没 add 的内容)
git diff
# 已暂存、等待提交的内容
# 让 AI 只 add 它确实该交的文件,再 review
# 满意后再 git commit
技巧:让 Agent 用 git add -p 分批挑选,或你用 git diff --stat 先鸟瞰规模,再逐文件细看。把「先 diff、后 commit」写进 Agent 的规则文件(见下节),能少踩无数坑。
改崩了别慌:Git 是 AI 的「后悔药」
AI 把代码改坏是常态。好在只要还没强推,几乎都能救回来:
git checkout -- <file> # 丢弃某个文件的工作区改动
# 想整体回到上一次提交(未推送时最常用)
git stash # 先暂存自己的改动
# 或
# 让 AI 在隔离分支上改,错了直接删分支重来:
git branch -D ai/experiment
# 已经提交但想撤销(不碰公共历史)
git revert <commit> # 生成反向提交,安全
核心心法:AI 的试验放在隔离分支,错了删分支比 reset --hard 还干净;公共分支上只认 revert。
让 AI 走 PR,而不是直接 push main
最危险的操作是让 Agent 拥有 git push 权限后直推 main。更好的是:AI 只推特性分支,由你发起 PR/MR,评审通过再合并:
# 让 Agent 推送隔离分支(不要 --force)
git push -u origin ai/experiment
# 你在网页上发起 PR → 看 CI → 人工 review → 合并
# 合并不再需要 Agent 碰 main
护栏:在平台设置里对 main 开启「必须 PR 才能合并」「禁止直接 push」「要求审查数 ≥ 1」。即便 Agent 拿了 token,也推不进 main。
推荐工作流:人定方向,AI 写码
把下面这条约定写进项目的 Agent 规则文件(CLAUDE.md / AGENTS.md / .cursorrules),让 AI 自觉遵守:
# 给 AI 的 Git 规则(示例)
- 绝不在 main / master 上直接提交
- 改动前先 git switch -c <分支>
- 提交前必须 git diff 让我确认
- 绝不使用 git push --force
- 涉及密钥/凭据的文件不要碰,先问我
- 只 push 特性分支,合并由我发起 PR
一句话总结:让 AI 在隔离分支上自由发挥,你用 diff 当眼睛、用 PR 当闸门、用 revert 当后悔药。Git 不阻止 AI 犯错,但保证你随时能 undo。