跳到正文

重置与回退提交

Reset & Revert

高级通用

重置与回退提交(Reset & Revert)是 Git 中两种处理已提交改动的方式:reset 移动分支所指向的提交,revert 则新增一个提交来抵消旧改动。它们帮你撤回错误代码,同时决定是否保留原有提交历史。

你可能会说:「刚才那次提交把登录页弄坏了,帮我撤掉它,但别影响同事已经拉取的代码。」

读之前建议先了解(这是一个高级概念)

动手看看

main当前所在 HEAD搭建登录页添加表单校验main · HEAD
1

登录页刚做完基础表单,目前在 main 上,准备继续调整细节。

要点

  1. 1

    先看提交有没有分享出去

    如果错误提交只在你本地,reset 可以让当前分支退回较早的提交。如果它已经推送、同事也可能基于它工作,revert 更合适,因为它不改写大家共同看到的历史。

  2. 2

    重置会移动分支的位置

    reset 把当前分支指向你指定的提交,但代码改动是否留在暂存区或工作区,取决于所选模式。尤其是 hard 模式会丢弃受影响的未提交改动,所以让 AI 执行前,先说清哪些本地修改要保留。

  3. 3

    回退提交会新增一次提交

    revert 不会删掉原来的提交,而是根据它生成一份反向改动,再形成新提交。比如某次提交误删了后台的筛选栏,你可以回退那次提交,同时保留之后其他功能的提交记录。

  4. 4

    反向改动也可能发生冲突

    如果后续提交又修改了同一段代码,revert 可能遇到冲突;它也不保证产品状态自动恢复正确。处理后我们还得看差异、跑相关测试,确认没有把后来需要的改动一起抵消。

容易混淆的地方

reset 和 revert 处理的是 Git 提交历史,不等于编辑器里撤销一次输入:尚未提交的文件改动,可以先用编辑器撤销或 Git 的文件恢复操作。它们也不等于线上回滚;代码提交处理好后,已部署的网站仍可能需要重新部署或执行发布回滚。

什么时候用

适合用

  • 你在本地刚提交了错误的页面布局,还没推送,想退回提交并保留文件改动继续修改。
  • 一个已推送的提交破坏了注册流程,你想抵消它,同时保留团队可追溯的提交历史。
  • AI Agent 连续提交了几个功能,其中一次改动有问题,你想只撤掉那次提交的效果。

不适合用

  • 你只是想看 AI 改了哪些文件,还没决定撤回;先用差异对比检查改动。
  • 你只是在编辑器里误删一段尚未提交的文案;直接撤销编辑或恢复该文件即可。
  • 线上服务需要立刻恢复,但仓库提交没有问题;优先检查部署记录,选择发布回滚方案。

练一练

团队的后台筛选功能已推送到共享分支。你发现昨天的一次提交让筛选条件失效,但今天其他同事又提交了无关修复。你会让 AI 怎么处理?

让 AI 帮你做

请先查看当前分支状态、提交记录和未提交改动,不要直接执行命令。定位导致后台筛选失效的那次提交;如果它已推送到共享分支,用 revert 抵消,保留后续提交。先说明计划和可能的冲突,执行后展示差异并运行相关测试。

接下来学什么