我之前学 Git 的时候,总觉得它是程序员才需要背的一堆命令。
后来开始用 AI 写代码,态度变了。
AI 改代码太快了。你让它修一个按钮,它可能顺手改了样式、状态、接口调用,甚至把一个你没提到的文件也动了。页面能跑,不代表这次改动就是干净的。等你发现哪里不对,脑子里只剩一个问题:刚才到底改了什么?
这就是 Git 对 AI 独立开发者的意义。
它不是为了显得专业,而是给自己留一条退路。尤其是一个人做小软件、小工具、小 MVP 时,Git 可以帮你做到三件事:
- 知道 AI 动了哪些文件;
- 把每个阶段保存下来;
- 改坏以后能退回去。
我现在更愿意把 Git 理解成一套开发安全习惯,而不是一门复杂技术。

先记住这一条主线
如果你暂时不想理解太多概念,先记住这套流程就够了:
改之前先看状态
改之后先看差异
确认没问题后提交
重要功能先开分支
提交后推送到 GitHub
出问题用 restore 或 revert 处理这几句话听起来普通,但放到 AI 开发里很有用。
以前自己写代码,改动速度慢,脑子里大概还记得改过哪里。现在让 AI 连续跑几轮任务,几分钟内可能就是几十处变化。没有 Git,你只能靠记忆和感觉判断。这个风险有点大。
Git 到底是什么
Git 是一个版本管理工具。
更白话一点,它像项目文件的版本记录仪。每次你把一个阶段保存下来,Git 就会记录那一刻的文件状态。以后你可以查看这次改了什么,也可以回到之前的版本。
对写文章的人来说,它可以保存不同版本的文稿。
对开发者来说,它几乎是基础工具。
对用 AI 写代码的人来说,它更像保险绳。因为 AI 一次可能改很多地方,你需要一个工具帮你确认:这些改动是不是你要的。
为什么 AI 开发更需要 Git
我自己觉得,初学者学 Git 不需要一开始就追求完整。先掌握几个能救命的动作。
保存版本
每完成一个阶段,就保存一次。
比如:
初始化项目
完成登录功能
完成订单列表
修复上传问题
调整页面样式以后如果某次修改出问题,你能知道问题大概从哪一次开始。
看 AI 到底改了什么
AI 改完以后,不要只看页面能不能跑。
要看它具体改了哪些文件、哪些行。
git diff这个命令会把本次未提交的变化列出来。你可以检查有没有无关文件、有没有删掉重要内容、有没有把密钥写进代码。
撤销错误修改
文件还没提交,可以恢复到上一次提交状态。
已经提交,也可以用更安全的方式撤销某一次提交。
这里先不用急着学 reset。对初学者来说,restore 和 revert 更容易掌握,也更不容易把历史弄乱。
用分支做实验
分支可以理解成一条单独的实验线。
main 保持稳定,新功能放到分支里让 AI 做。确认没问题,再合并回 main。
如果 AI 在分支上改坏了,你可以丢掉这条分支,主线不受影响。
推送到 GitHub
本地 Git 只保存在当前电脑上。
推送到 GitHub 后,代码和文档就有了云端备份。换电脑、重装系统,或者以后想找回某个版本,都更方便。
先理解 Git 的四个位置
很多人第一次卡在 Git,是因为不知道文件到底在什么位置。
先别背定义,记这个图:

工作区
工作区就是你当前正在编辑的项目文件夹。
例如:
C:\ZiYun-DDliu\开发教程你平时看到的 .md 文件、代码文件、图片文件,都在工作区里。
暂存区
暂存区是准备提交的改动。
文件改完后,不会自动进入正式版本。你需要先执行:
git add 文件名或者把当前目录下所有改动加入暂存区:
git add .提交
提交就是正式保存一个版本。
git commit -m"提交说明"每一次提交都会生成一个版本编号。
例如:
0204a37 初始化开发学习文档0204a37 是这次提交的短编号。以后查看历史、撤销提交时都会用到它。
仓库
仓库是 Git 保存历史记录的地方。
当你运行:
git init当前目录会出现一个隐藏的 .git 文件夹。这个文件夹就是本地 Git 仓库的核心数据。
远程仓库
远程仓库就是 GitHub、Gitee 这类平台上的云端仓库。
本地仓库和远程仓库的关系大概是:
本地 Git 仓库 <-> GitHub 远程仓库推送到远程:
git push从远程拉取:
git pull第一次使用 Git 前的配置
安装 Git 后,先配置用户名和邮箱。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"查看配置:
git config --global--get user.name
git config --global--get user.email如果能输出你刚才设置的名字和邮箱,就说明配置成功。
这里提醒一句:如果你要把代码推到公开 GitHub 仓库,提交记录里可能会显示邮箱。介意隐私的话,可以去 GitHub 设置里找到 no-reply 邮箱,再把 Git 邮箱改成那个地址。
创建一个本地 Git 仓库
先进入项目目录:
cd C:\ZiYun-DDliu\开发教程初始化 Git 仓库:
git init把默认分支改成 main:
git branch -M main查看状态:
git status如果看到类似内容:
On branch main
No commits yet
Untracked files说明当前目录已经变成 Git 仓库,但文件还没有被 Git 跟踪。
如果 git status 里的中文文件名显示成下面这样:
"\345\274\200\345\217\221..."可以运行:
git config --global core.quotepath false再重新执行:
git status中文文件名通常就能正常显示了。
第一次提交
把当前目录下的文件加入暂存区:
git add .再查看状态:
git status如果看到:
Changes to be committed:
new file: 开发学习规划.md说明文件已经准备好提交。
正式提交:
git commit -m"初始化开发学习文档"查看提交历史:
git log --oneline你会看到类似:
0204a37 初始化开发学习文档到这里,第一次版本保存完成。
修改后,先看差异
假设你改了一个文件,先看状态:
git status如果看到:
modified: 开发学习规划.md说明这个文件被修改了,但还没有提交。
查看具体改动:
git diff也可以只看某个文件:
git diff-- 开发学习规划.md例如你追加了一行:
Add-Content-LiteralPath".\开发学习规划.md"-Encoding UTF8 -Value"`n这是一次 Git 修改练习。"git diff 里会看到类似:
+
+这是一次 Git 修改练习。这说明 Git 能精确识别新增内容。
在 AI 开发里,这一步很关键。每次让 AI 改完代码,都应该先看 git diff,再决定要不要提交。
Windows 换行符提示不用慌
在 Windows 上执行 git diff 或 git add 时,可能看到:
warning: in the working copy of '开发学习规划.md', LF will be replaced by CRLF the next time Git touches it这通常不是严重错误。
它的意思是:文件里的换行符可能会被 Git 按 Windows 风格处理。初学阶段可以先忽略,不影响正常提交。
提交一次修改
确认 git diff 只包含你想要的改动后,加入暂存区:
git add 开发学习规划.md查看状态:
git status如果看到:
Changes to be committed:
modified: 开发学习规划.md说明修改已经进入暂存区。
提交:
git commit -m"练习修改开发学习规划"查看历史:
git log --oneline可能会看到:
2cf5460 练习修改开发学习规划
0204a37 初始化开发学习文档这表示第二次提交成功。
查看某次提交改了什么
查看某次提交的摘要:
git show --stat2cf5460可能输出:
开发学习规划.md | 2 ++
1 file changed, 2 insertions(+)意思是:这次提交修改了 1 个文件,新增了 2 行。
查看具体改动:
git show -- 开发学习规划.md如果只看到你预期中的内容,就说明这次提交比较干净。
改坏了,怎么撤
撤销之前先判断一件事:这次改动提交了吗?
还没提交:用 restore
如果文件改坏了,但还没有提交,可以用:
git restore 文件名例如:
git restore 开发学习规划.md这会把文件恢复到上一次提交时的状态。
注意,这个操作会丢弃当前未提交修改。执行前先确认没有重要内容。
已经提交:优先用 revert
如果修改已经提交,不建议初学者直接用 git reset。
更稳的方式是:
git revert 提交编号 --no-edit例如:
git revert 2cf5460 --no-editGit 会生成一次新的撤销提交,类似:
67cade2 Revert "练习修改开发学习规划"这表示 Git 没有删除历史,而是新增了一条撤销记录。
真实项目中,revert 通常比 reset 更适合初学者。原因很简单:它保留历史,出了问题也更容易解释和回头看。
分支:给 AI 一条实验线
分支是我觉得 AI 开发里最值得早点学的概念。
它可以理解成一条单独的实验线。main 是稳定版本,新功能放到分支里做。AI 改得好,再合并。AI 改坏了,先别慌,主线还在。
查看当前分支:
git branch如果看到:
* main说明当前在 main 分支。
创建并切换到新分支:
git switch-c practice-branch再次查看:
git branch应该看到:
main
* practice-branch在分支上修改文件后,照常提交:
git add 开发学习规划.md
git commit -m"在练习分支新增内容"查看历史:
git log --oneline--decorate你可能看到:
2d9c9a6 (HEAD -> practice-branch) 在练习分支新增内容
67cade2 (main) Revert "练习修改开发学习规划"
2cf5460 练习修改开发学习规划
0204a37 初始化开发学习文档这表示当前在 practice-branch,并且这个分支比 main 多一次提交。
切回 main:
git switch main再切回练习分支:
git switch practice-branch你会发现同一个文件,在不同分支上可以呈现不同内容。这就是分支的价值。
合并和删除分支
当分支上的改动确认没问题后,可以合并回 main。
先切回主分支:
git switch main合并分支:
git merge practice-branch如果看到:
Fast-forward可以先简单理解成:main 之前没有新变化,所以 Git 直接把主线往前移动到分支的最新位置。
合并后删除练习分支:
git branch -d practice-branch查看当前分支:
git branch --show-current如果输出:
main再查看状态:
git status如果输出:
On branch main
nothing to commit, working tree clean说明本地仓库状态正常。
绑定 GitHub 远程仓库
本地 Git 仓库只保存在电脑上。
如果要同步到 GitHub,需要先在 GitHub 创建远程仓库。
远程仓库地址通常长这样:
https://github.com/你的用户名/你的仓库名.git绑定远程仓库:
git remote add origin https://github.com/你的用户名/你的仓库名.git查看绑定结果:
git remote -v如果看到:
origin https://github.com/你的用户名/你的仓库名.git (fetch)
origin https://github.com/你的用户名/你的仓库名.git (push)说明绑定成功。
这里的 origin 是远程仓库的默认名字。以后看到 origin,就可以理解成 GitHub 上的那个仓库。
第一次推送到 GitHub
第一次推送:
git push -u origin main这一步可能会弹出 GitHub 登录窗口。按提示在浏览器里完成登录和授权即可。
如果成功,可能看到:
To https://github.com/你的用户名/你的仓库名.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.意思是:
- 本地 main 分支已经推送到 GitHub;
- GitHub 上也创建了 main 分支;
- 本地 main 和远程 origin/main 建立了跟踪关系。
以后再次推送,不需要写完整命令,只需要:
git push本地提交后,再推送到 GitHub
日常开发里,流程通常是这样:
git status
git diff
git add 开发学习规划.md
git commit -m"练习推送到 GitHub"
git push推送成功后,再查看状态:
git status如果看到:
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean说明本地和 GitHub 已经同步。
AI 开发中,我建议固定这套动作
使用 AI 写代码时,我建议先把下面这套流程变成肌肉记忆。
让 AI 改代码前
先确认仓库干净:
git status如果不干净,先处理已有修改。否则 AI 的改动会和之前的改动混在一起,很难判断问题。
重要功能先开分支
git switch-c feature-功能名例如:
git switch-c feature-login这样 AI 的改动不会直接影响 main。
AI 改完后先看差异
git diff重点看这几类问题:
- 是否改了不相关文件;
- 是否删除了重要内容;
- 是否暴露了密钥;
- 是否把很多逻辑堆在一个文件里;
- 是否修改了数据库结构;
- 是否改动范围明显超过需求。
验证没问题后提交
git add .
git commit -m"完成某某功能"合并回 main
git switch main
git merge feature-功能名
git push如果 AI 改坏了
还没提交时:
git restore 文件名已经提交时:
git revert 提交编号 --no-edit
git push常用命令速查
基础状态:
git status
git log --oneline
git log --oneline--decorate查看改动:
git diff
git diff-- 文件名
git show --stat 提交编号
git show 提交编号提交:
git add 文件名
git add .
git commit -m"提交说明"撤销:
git restore 文件名
git restore --staged 文件名
git revert 提交编号 --no-edit分支:
git branch
git branch --show-current
git switch-c 分支名
git switch 分支名
git merge 分支名
git branch -d 分支名远程仓库:
git remote -v
git remote add origin 仓库地址
git push -u origin main
git push
git pull先学到这个程度就够了
如果你是为了 AI 独立开发软件而学 Git,第一阶段不用追求一次学完。
先把这些事做熟:
- 安装状态检查;
- 配置 Git 用户名和邮箱;
- 初始化本地仓库;
- 解决中文文件名显示问题;
- 第一次提交;
- 修改文件并查看差异;
- 查看某次提交的具体改动;
- 使用 git restore 撤销未提交修改;
- 使用 git revert 安全撤销已提交修改;
- 创建分支;
- 在分支上修改并提交;
- 合并分支;
- 删除已合并分支;
- 创建 GitHub 远程仓库;
- 绑定 origin;
- 推送到 GitHub。
到这里,其实已经够支撑日常 AI 开发里的基本安全流程了。
后面如果继续学,可以再补 .gitignore、README、Pull Request、冲突解决、tag、多人协作、GitHub Actions、SSH key、私有仓库权限。
但那是下一阶段的事。
现阶段最重要的是形成一个习惯:每次让 AI 改代码前,先确认 Git 干净;每次 AI 改完后,先用 Git 检查差异;确认没问题后,再提交和推送。
这件事不复杂,但它能让一个人做软件时少很多慌张。
夜雨聆风