教你在 AI 写代码时用 Git 命令存档、回退和分线开发,改崩了也能一键恢复
你是不是也遇到过这种情况:AI 刚给你写了一个功能,你一试发现改坏了,想撤回却因为没有存档,再也回不去了?或者想同时开发多个功能,又怕互相干扰,有的做完了、有的正在推进,不知道怎么上线?
其实不管是改崩代码想要回档,还是多个项目同时跑,核心解决方案都是 git 命令。
这期教程不讲 Vibe Coding 技巧,专门讲在 AI 写代码时怎么用 Git 做存档、回退和分线开发。学会之后,AI 再改崩你的项目也不怕,随时能回退,还能分线开发多个功能互不干扰。
本期涉及的外部工具和库:
| 工具/库 | 链接 | 用途 | 费用 |
|---|---|---|---|
| VSCode | code.visualstudio.com | 代码编辑器,内置 Git 支持 | 免费 |
| SortableJS | sortablejs.github.io | 拖拽排序 JavaScript 库 | 开源免费 |
| Git Graph | marketplace.visualstudio.com | VSCode 可视化 Git 历史插件 | 免费 |
推荐使用 VSCode 作为开发环境,这是目前最通用且功能强大的免费代码编辑器,内置了完整的 Git 支持。
新建仓库
打开 VSCode,新建一个空文件夹,然后点击菜单栏「终端 → 新建终端」,输入以下命令:
git init
回车后看到提示:
Initialized empty Git repository
说明仓库已经建好了。这个命令的作用是在项目里生成了一个隐藏的 .git 文件夹,这就是仓库的本体,以后所有的存档记录都存在里面。这个文件夹不用管,也不能删,删了仓库就没了。
配置身份信息
如果你之前没用过 Git,第一次提交前还需要配置用户信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这两行是告诉 Git 你是谁。这个配置只需要做一次,以后所有项目都会自动使用。
如果你已经有了 Vibe Coding 的项目但还没建 Git 仓库,这一步一定要先做好,再继续后续开发。
为了更直观地理解 Git 的作用,我们以 Focus 看板工具为例来演示。这个工具用来管理个人事项,左边是多个看板列表,中间是看板内容(支持列、卡片和拖拽排序),侧边栏可以切换到日历视图。
VSCode 源代码管理面板
在 VSCode 中点击左侧源代码管理按钮(快捷键 Ctrl + Shift + G),面板顶部显示当前分支名 main,这是默认的主线分支。更改列表为空,说明工作区很干净。
查看历史记录
新建终端,输入:
git log --oneline
输出大约 23 行,每行是一个存档点。--oneline 把长长的历史压缩成每行一句话,只显示存档编号的前几位和备注标题,一眼就能扫完。
你会看到类似这样的记录:
a1b2c3d 日历日程支持拖拽排序
e4f5g6h 合并 feature/calendar 到 main
i7j8k9l 日历模块
m0n1o2p settings backup
q3r4s5t 初次版本提交
注意 合并 feature/calendar 这一行——这是之前开发日历功能时开了分支,做完后合并回主线的记录。
如果你安装了 Git Graph 扩展,还能看到一个更直观的树形图,所有分支和提交一目了然。
接下来演示一次真实的功能开发流程,用到 Git 的分支和合并功能。
场景
现在想给日历加上拖拽功能:直接拖动日程条目到其他日期,就能完成日期修改。但不要直接在 main 主线上改——万一改坏了,或者同时想开发其他功能,就会互相冲突。
分支的概念
你可以把分支理解成复制一份当前项目,在副本上随便改,改好了再合回去。主线始终保持稳定,副本上做实验。
创建功能分支
在终端输入:
git checkout -b feature/calendar-drag
checkout 是切换分支-b 表示新建feature/calendar-drag 是分支名,feature/ 开头是惯例,表示这是一个功能分支看到 VSCode 左下角状态栏的分支名从 main 变成 feature/calendar-drag,说明你现在已经在新的分支上了。main 主线完全不受影响,改坏了最多删掉这个分支。
让 AI 开发功能
在当前分支下,向 AI 描述需求:
帮我在日历视图里给日程条目加上拖拽排序功能,参考看板视图里 SortableJS 的使用方式。
AI 改完后刷新浏览器测试:拖动日历上的日程条目到其他日期,确认能成功拖动,且详情里的日期也随之更新。功能开发完毕。
功能开发完成,接下来把改动保存下来,再合并回主线。
查看改动
git status
这个命令告诉你哪些文件被改了。常见的标记:
| 标记 | 含义 | 说明 |
|---|---|---|
| M | Modified | 文件之前就有,你改过了 |
| U | Untracked | 全新添加的文件,Git 之前没见过 |
| D | Deleted | 被删除的文件 |
存档三步走
git add .
. 表示当前文件夹下的所有改动,相当于「全选」。
git commit -m "日历日程支持拖拽排序"
-m 后面跟的是存档备注,写上你这次做了什么。以后回看历史,一看备注就知道这个版本改了什么。
先切回 main:
git checkout main
然后执行合并:
git merge feature/calendar-drag
合并完成后,main 主线上就有了刚才的改动,功能正式上线。这个分支可以删,删不删都行,留着也不影响。
记不住命令?没关系,VSCode 的源代码管理面板把刚才所有操作都做成了按钮,完全不用敲命令。
| 操作 | VSCode 面板操作方式 |
|---|---|
| 建分支 | 左下角状态栏点分支名 → 选「+ 创建新分支」→ 输入名字 |
| 切分支 | 左下角状态栏点分支名 → 选目标分支 |
| 暂存 | 源代码管理面板里,「更改」旁边点「+」号 |
| 提交 | 消息框写备注 → 点勾形「提交」按钮 |
| 合并 | Ctrl + Shift + P → 输入「Git: Merge Branch」→ 选要合并的分支 |
左下角状态栏永远显示你当前在哪个分支上,鼠标一点就能切换,非常方便。
快速过一遍日常最常用的四个命令。
1. git status — 查看改动
改了一个文件之后,想知道具体改了哪些内容:
git status
输出里显示哪些文件被修改了:M(Modified)、U(Untracked)、D(Deleted)一目了然。
2. git log — 查看历史
git log --oneline
现在变成 24 个 commit 了,多出来的那条就是你刚才的提交。以后每次存档都会加一行,项目历史一点一点累积起来。
如果装了 Git Graph 插件,顶部会有一个按钮,点开会看到一张树形图,所有分支、所有 commit、谁在什么时候从哪分叉、谁合并到谁,一眼就能看清。
3. git restore — 撤销未存档的改动
改了一个文件但还没 commit,突然不想继续改了:
git restore 文件名
文件立刻恢复到修改之前的状态。只适用于还没 commit 的改动。
4. git reset --hard — 回到历史版本
已经 commit 了,想退回到之前的某个版本:
git log --oneline # 找到想回退到的 commit 短 ID
git reset --hard <短ID> # 回到那个版本
⚠️ 注意:
reset --hard会丢弃当前所有未保存的改动,用之前确保没有重要的未提交内容。
面板上的对应操作
| 需求 | 面板操作 |
|---|---|
| 看改了什么 | 更改列表,M/D/U 标记一目了然 |
| 看历史 | 左侧文件树「时间线」看单文件历史,或 Git Graph 看完整树形图 |
| 撤销 | 文件右边点回退箭头,或右键「放弃更改」 |
| 回退 | Git Graph 里找到目标 commit → 右键「Reset current branch to this commit」→ 选 Hard |
以上就是 Vibe Coding 中使用 Git 进行版本管理的完整流程。最后快速回顾一下:
| 编号 | 核心操作 | 用途 |
|---|---|---|
| 1 | git init + git config | 初始化仓库,配置身份 |
| 2 | git checkout -b | 创建功能分支,隔离开发 |
| 3 | git status → git add → git commit | 查看、准备、存档改动 |
| 4 | git checkout main → git merge | 合并分支,功能上线 |
| 5 | git log --oneline | 查看项目历史 |
| 6 | git restore / git reset --hard | 撤销未存档改动 / 回退到历史版本 |
核心 takeaway:Vibe Coding 不怕改崩,怕的是没存档。 养成「改前先建分支、改完就 commit」的习惯,AI 再激进你也有退路。
这期讲的都是本地操作,代码还在你电脑上。下期我们会讲怎么把项目推上 GitHub,实现云存档、多设备同步、一键部署上线。