ByteNoteByteNote
Agentic Coding 12:Git 是你的后悔药
字

字节笔记本

2026年10月6日 · 约 15 分钟读完

Agentic Coding 12:Git 是你的后悔药

API中转
¥120

本文是「Agentic Coding 实战课」系列的第十二篇,主题是版本控制。让 AI 编程助手放手干活的前提,是你随时能把项目恢复到稳定状态;这一篇就来讲,怎么用最少的 Git 知识给项目装上"后悔药",从此敢让 Agent 大刀阔斧地改代码。

为什么说 Git 是 Agentic Coding 的命脉

一句话总结:没有 Git,你只能祈祷 Agent 别搞砸;有了 Git,你随时能撤销一切。

把 Git 想成一个超级游戏存档系统,最好理解:

游戏Git
存档点commit(提交)
读档checkout(检出)
平行世界(试错副本)branch(分支)
把副本成果合回主线merge(合并)
看历史记录log
后悔药reset

核心能力一句话:你可以在任何时候,回到任何存档点。这正是敢让 Agent 放手干活的底气来源。

先装图形化工具,别急着背命令

很多人怕 Git,是因为命令行难记。对新手,建议先用图形工具建立直觉,主流选择有:

工具特点价格
VS Code 内置 Git写代码就有,零额外学习免费
GitHub Desktop官方出品,界面最友好免费
GitKraken界面美观,分支图直观公开仓库免费
TowerMac 上最精致付费

推荐路径:先装 GitHub Desktop(到 desktop.github.com 下载,登录 GitHub 账号即可用),看懂"存档、读档"的流程,再学命令行。命令行更快,而且 Agent 也能帮你跑。

最小可用工作流:五个动作就够

不要被 Git 的几百个命令吓到,Agentic Coding 只需要五个动作:初始化、看状态、存档、看历史、读档。

Git 最小工作流:五个动作就够

动作 1:初始化(一个项目只做一次)

bash
cd my-project       # 进入项目目录
git init            # 初始化 Git

成功标志是出现一个隐藏的 .git 文件夹。第一次提交前,还要建一个 .gitignore 文件,把不该进版本库的东西挡在外面(密钥、依赖目录、系统垃圾文件等):

text
__pycache__/
*.pyc
.env
.DS_Store

动作 2:看状态(最常用)

bash
git status

输出大致长这样:

text
On branch main
Changes not staged for commit:
  modified:   main.py        ← 改了但没存档
  new file:   utils.py       ← 新加的

Untracked files:
  data.csv                   ← 还没纳入 Git

这就像查看"当前进度"和"上次存档"的差异。

动作 3:存档(每完成一个小任务做一次)

两步走:

bash
# 第 1 步:把改动放进"待存档"
git add .            # . 表示全部

# 第 2 步:正式存档,写一句话说明
git commit -m "完成用户登录功能"

commit message(提交说明)非常重要,未来的你会感谢现在认真写说明的你:回退时一眼就知道每个存档是干嘛的。

好的 commit message:完成销售看板的数据导入模块。坏的 commit message:update、asdfasdf、fix bug、改了一些东西。

动作 4:看历史(想回退时)

bash
git log --oneline

输出:

text
a3b4c5d (HEAD -> main) 完成图表模块
8f7e6d5 完成数据清洗
2c3b4a5 完成数据导入
1111111 初始化项目

每行前面那串字符(如 a3b4c5d)就是这个存档的"传送门坐标"。

动作 5:读档(回到某个存档)

bash
# 看(只看,不改)
git checkout 2c3b4a5

# 真的回到那个版本(丢弃之后的改动)
git reset --hard 2c3b4a5

注意:reset --hard 是真删。用之前确认你不会后悔,没有 commit 过的改动会永久丢失。

实战:第一次完整的 Git 流程

用一个具体例子走一遍。

第一步,建项目:

bash
mkdir my-git-demo
cd my-git-demo
git init

第二步,写第一个文件,直接让 Agent 帮你:

> 在当前目录创建一个 calc.py 文件,实现一个 add(a, b) 函数,返回 a+b。

第三步,第一次存档:

bash
git status                 # 看到 calc.py 是新文件
git add calc.py
git commit -m "添加加法函数"

第四步,再加一个功能,然后照旧存档:

> 在 calc.py 里再加一个 multiply(a, b) 函数。
bash
git add calc.py
git commit -m "添加乘法函数"

第五步,体验读档:

bash
git log --oneline
# b9c8d7e 添加乘法函数
# a1b2c3d 添加加法函数

git checkout a1b2c3d       # 回到只有加法的版本
cat calc.py                # 乘法没了

git checkout main          # 回到最新版本
cat calc.py                # 乘法又回来了

走到这里,你已经掌握了 Git 的核心能力:随时存档,随时读档。

Agentic Coding 专属的五个 Git 习惯

以下五个习惯,是与 Agent 配合时推荐的 Git 节奏。

习惯 1:每完成一个小任务就 commit 一次。 把任务拆小,一次一个可验证的小改动,节奏是:

开始小任务 → Agent 实现 → 验证通过 → commit → 清空上下文 → 下一个

好处:每个 commit 是一个"安全岛";出错能精准回退到上一个能跑的版本;历史记录就是你的开发日记。

习惯 2:commit message 写"做了什么",不写"改了什么"。 推荐写法:完成销售看板的数据导入功能、修复:佣金计算未排除退款订单。不推荐写法:修改 main.py 第 42 行(看了等于没看)、fix bug。

习惯 3:危险操作前先 commit。 让 Agent 做大改动前,先存档当前状态:

bash
git add .
git commit -m "重构前的稳定状态"

然后让 Agent 大胆改。改砸了?git reset --hard 一秒回到稳定状态。

习惯 4:让 Agent 帮你写 commit message。 写不出好的说明,直接让 Agent 代劳:

text
> 看看 git diff,帮我写一个简洁的 commit message,
  描述这次改动做了什么。给我 3 个候选,我选一个。

习惯 5:用分支做"实验"。 想试一个新想法但怕搞坏主线,用分支:

bash
git checkout -b experiment/v2   # 创建并切换到新分支
# 在这里大胆改,不影响 main
# 改得满意:
git checkout main                # 回主线
git merge experiment/v2          # 把实验成果合并进来

# 改得不好:
git checkout main                # 回主线
git branch -D experiment/v2      # 删除实验分支

分支就是平行宇宙:在副本里随便试,主线安全。

一次完整的"救火"场景

设想这样的危机时刻:项目做到一半,Agent 改了一通,全崩了。救火分五步走。

Git 救火流程:找到安全岛,备份烂状态,回退并复盘

第一步,先看历史,找"安全岛":

bash
git log --oneline
# a3b4c5d (HEAD) 重构认证模块 ← 这之后全崩了
# 8f7e6d5 完成订单模块 ← 还能跑
# 2c3b4a5 完成用户模块

第二步,先备份"现在的烂状态"(万一有用):

bash
git stash                        # 把当前改动暂存
# 或
git checkout -b broken-backup    # 把烂状态存到新分支

第三步,回到"安全岛":

bash
git reset --hard 8f7e6d5         # 回到"完成订单模块"

第四步,重新规划,搞清楚刚才哪里改坏了:

bash
git show a3b4c5d                 # 看那次 commit 的内容
git diff 8f7e6d5 a3b4c5d         # 看两个版本的差异

第五步,用更小的步子重做:不要一次性大重构,拆成三个小任务,一个一个 commit,出问题立刻能回退。

整套救火流程走下来不超过 30 分钟;如果没有 Git,这事可能要重做一整天。

关于 GitHub(远程仓库)

到这里 Git 还只在本地。需要多台电脑同步、团队协作或云端备份时,就要用 GitHub 这样的远程仓库。

把本地项目推上去,三步:

第一步,在 github.com 新建仓库(不要勾选自动生成 README)。

第二步,本地关联远程并首次推送:

bash
git remote add origin https://github.com/你的用户名/仓库名.git
git branch -M main
git push -u origin main

第三步,以后推送与拉取:

bash
git push                       # 上传到云端
git pull                       # 从云端拉取最新

安全提醒:推送前确认 .gitignore 配好了,一旦推到公开仓库,密钥和敏感数据就等于公开了。推送前可以检查有没有敏感文件被追踪:

bash
git ls-files | grep -E "\.env|\.key|secret"

如果有,先移出追踪再推送;万一密钥已经进了提交历史,即使删掉文件历史里也还在,需要用 BFG 或 git filter-repo 清理历史,并立刻吊销密钥。

Git 命令速查

  • 一次性:git init 初始化。
  • 日常高频:git status 看状态;git add . 加入待存档;git commit -m "说明" 存档;git log --oneline 看历史。
  • 回退救火:git checkout <id> 临时看老版本;git reset --hard <id> 真的回到老版本;git checkout -b <分支名> 开新分支试错。
  • 远程(可选):git push 推到云端;git pull 拉取最新。

动手练习

练习 1(必做):给你手头任意一个练手项目初始化 Git,每完成一个小任务 commit 一次,至少攒出 3 个 commit。

练习 2(必做):体验读档。先 commit 一次,故意改坏代码,再用 git reset --hard 回退,感受这种"安全感"。

练习 3(推荐):注册 GitHub,把项目推上去(私有仓库免费),得到一份云端备份。

练习 4(进阶):开一个分支做一个危险改动(比如换一种存储方式),改完合并回主线。

练习 5(思考):这个做法哪里有问题?"我把 API key 直接写在代码里,commit 了,push 到 GitHub 公开仓库。"参考答案:密钥进公开仓库等于钱包上街。即使后来删了,Git 历史里还在。必须立刻吊销 key,用 BFG 清理历史,之后改用 .env 加 .gitignore 管理敏感信息。

要点回顾

  1. Git 就是项目的游戏存档系统。
  2. 最小工作流:init、status、add、commit、log、checkout/reset。
  3. 每完成一个小任务就 commit 一次,这是 Agentic Coding 的节奏。
  4. 危险操作前先 commit,给 Agent 改造的底气。
  5. 用分支做实验副本,保护主线。
  6. reset --hard 之前三思,没 commit 的改动会消失。
  7. 推 GitHub 前必查 .gitignore,密钥绝不进仓库。

到这里,Agentic Coding 最核心的五项技能就凑齐了:规格化,把想法翻译成可执行的需求;任务分解,把大象切成块;验证,知道 Agent 做得对不对;调试,走偏了能拉回来;版本控制,拥有后悔药。这五项组合起来,你就是一个合格的指令工程师。系列接下来的实战篇,会用这些技能从 0 到 1 做出几个真实可交付的项目,选一个最贴近你工作的领域开始即可。

参考资料:

相关文章

分享: