麦式参考 MickerBook Reference

提交

Commit

也常被叫作:存档保存版本提交一次commit 一下

你可能会这么说

「让 AI 每次改完一个阶段,就存一个带说明的档,改坏了能退回。」

提交 Commit

给项目存一个带说明的存档点,随时能退回的那一下。

「提交」(commit)就是给项目存一个带说明的存档点。AI 帮你改完一段代码,你觉得「这一版可以了」,就让它存个档:Git 会把这次改了什么记下来,并附上一句「为什么改」。以后任何时候,你都能退回到这个点。

关键在粒度:档要存得小、存得勤。每完成一个「有意义的阶段」就存一个——修好一个 bug、加好一个小功能。别攒三天改动一次性存个大档,那样退回时你根本分不清该退到哪一步。

提交说明是写给未来的你(和 AI)看的。三个月后项目坏了,你要在提交记录里找「是哪次改动引入的」——如果说明全是「update」「fix」,你什么都找不到;如果写的是「修复登录页在空密码时崩溃」,一眼就能定位。

长什么样 真实可交互,不是截图

改完一段代码存一个档写清改了什么随时能退回
git add .
git commit -m "修复登录页空指针"
git log --oneline
a1b2c3d 修复登录页空指针
e4f5g6h 新增用户资料页
✓ 好提交:改得小,说明看得懂
✕ 坏提交:攒三天一次存,说明写 update

存档点是一串连续的历史,git log 能看全。注意提交说明要能看懂——三个月后你自己都分不清「update」是哪次。

拆开看,里面有这几块

  1. 1
    提交编号 Hash

    每个存档点的唯一 ID(一串字符,如 a1b2c3d)。回退、对比都靠它。

  2. 2
    提交说明 Message

    一句「改了什么、为什么」。将来定位问题全靠它,写空话等于没写。

  3. 3
    改动内容 Patch

    这个提交具体动了哪些文件、哪些行。用 git show 编号 查看。

  4. 4
    时间与作者 Author & time

    谁、什么时候存的档。多人协作时用来追责和定位。

常见的有哪几种

普通提交git commit

把暂存区的内容存成一个档,附上说明。

用在:完成一个阶段后日常存档

查看历史git log

列出所有存档点。加 --oneline 只看编号和说明,最常用。

用在:确认存了几个档、找某次改动

安全撤销git revert

生成一个新提交,把最近一次改动反着做一遍,历史保留。

用在:想撤掉某次提交又不想丢历史

容易搞混?这样区分

提交 普通保存 / 另存为 Save

普通保存是覆盖式的:最新一份盖掉旧一份,旧的没了。提交是追加式的:每一次改动都留在历史里,能回到任意一次。判断方法:保存完你还能看到上一个版本吗?不能,那就是普通保存。

提交 推送 Push

提交是存到本地,推送(push)才是传到远程。很多人以为提交完就备份了,其实提交只在你电脑上,硬盘坏了就没了。判断方法:有没有执行过 push、有没有配远程仓库。

什么时候用得上

完成一个阶段就存档

修好一个 bug、加好一个小功能,立刻让 AI 提交一次。档存得勤,退回时粒度才细。

AI 大改之前先存档

让 AI 动手重构前,先确认当前版本有一个存档点,改坏了能退,而不是干瞪眼。

定位线上问题

线上坏了,看提交历史找「哪次改动引入的」,而不是全项目瞎排查。

你可以这样跟 AI 说

直接复制下面这段,把【】里的换成你的情况。它比一句「帮我加个 X」多说清楚了:改哪里、不许动啥、做完交什么。

【任务】用 Git 给 [项目目录] 做版本存档:每次我确认一个阶段完成,就存一个档
【范围】只做存档、查看历史和按我指示撤销,不改动任何业务代码的逻辑
【边界】
  - 每次存档前先跑 git status 和 git diff,把「这次要存什么」列给我,我确认后才执行 git add . 和 git commit -m "说明"
  - 提交说明必须写清「改了什么、为什么」,禁止 update / fix / wip 这类空话
  - 存档前检查暂存内容,不要把 .env、密钥、密码这类敏感文件提交进去
  - 绝对不要擅自执行 git reset --hard 或 git clean:它们会永久删除改动。需要撤销时用 git revert,它会生成一个新提交把改动反着做一遍,历史还在
【交付】
  1. 每次存档后贴出 git log --oneline 的最新 5 条
  2. 我要退回时,给我确切命令(优先 git revert),由我确认后你再执行,不要直接替我回退
  3. 结束时告诉我当前工作区有没有未存档的改动(git status 结果)

这段的关键是「先看 diff 再提交」和「禁止 reset --hard」。AI 默认会自作主张批量提交,或为了『干净』用危险命令清掉改动——这两条边界挡掉了最常见的数据丢失。

它说「做好了」,你怎么自己验

这是本站的重头戏。AI 最会的不是写代码,是说「已完成」。这一条,它通常最多做到「运行时」这层:真的跑起来了,能在本机看到结果。

要亲眼看到这些,才算数

  • 在项目目录跑 git log --oneline,能看到不止一条记录,且说明不是 update / done 这种空话。
  • 自己手动改一个文件,跑 git status,能看到它出现在未提交列表里;让 AI 提交后再跑 git log,确认多出一条。
  • 让 AI 用 git revert 撤销最近一次提交,刷新文件确认改动真的消失、且 git log 里历史还在(不是被删掉)。
  • 让 AI 列出提交历史里出现过的文件,确认里面没有 .env、密钥这类敏感文件。

它常这么糊弄你

  • 「已经用 Git 存档了」——但 git log 一条记录都没有,只是装了个 Git。
  • 「提交过了」——但改动其实还在工作区没进档,git status 一跑全是未提交文件。
  • 「帮你撤销了」——用的是 git reset --hard,把没存档的改动也一起清掉了,这是数据丢失不是撤销。
  • 提交说明全是 update / wip——退回时你根本分不清哪个是哪个,等于没存档。

这一条能验到「运行时」层:git log、git status、git revert 都是真跑的命令,你在自己电脑上就能亲手看到结果。要提到「生产」层,还得有远程仓库、分支保护和多人协作规范,那已经超出单机提交能覆盖的范围。

考考你 选一个你觉得对的

AI 说「我帮你把改动都提交好了」。你最快确认它真的做了,应该怎么做?