带你搞懂git回滚代码(实例详解)

我请教一下,带你搞懂git回滚代码(实例详解)
最新回答
酒还酹江月

2026-10-23 22:39:28

Git回滚代码的两种主要方式是git reset和git revert,分别适用于不同场景,以下是具体说明与实例解析:

一、git reset:彻底删除提交记录
作用:将指定提交从历史记录中完全移除,后续提交记录也会被删除。
适用场景:

  1. 主分支回滚:例如在master分支提交了A→B→C三个记录,若发现C有问题,可通过git reset回滚到B。
  2. 取消合并:开发分支develop合并到master后,若上线前发现合并内容有问题,可用git reset取消合并。
    注意事项:
  3. 慎用强制推送:回滚后本地记录会落后于远程仓库,需使用git push -f强制提交,但会覆盖他人提交,仅限个人分支或协作前明确沟通时使用。
  4. 避免滥用:若多人协作且已合并到主分支,滥用reset会导致他人提交记录丢失,引发冲突。
    实例操作:
  5. 合并develop到master后,通过git log找到目标提交(如B的哈希前7位69fde2c)。
  6. 执行git reset 69fde2c,此时本地master仅保留A和B的记录。
  7. 强制推送git push -f,远程仓库同步回滚状态。

二、git revert:生成反向提交抵消变更
作用:在当前提交后新增一次提交,抵消上一次提交的变更,不改变历史记录,是协作开发的首选方式。
适用场景:

  1. 修正错误提交:提交后发现内容有误,可通过git revert生成反向提交修正。
  2. 修改历史提交:多人协作时,需修改早期提交但不影响后续记录,可通过多次git revert逐个抵消。
    实例操作:
  3. 在develop分支(含3次提交)执行git revert 16083ce(抵消倒数第一个提交)。
  4. 工作区会显示反向变更,提交后生成新记录(如Revert "新增C"),原提交仍保留。
  5. 若需抵消多个提交,依次执行git revert对应哈希即可。

三、代码回滚的补充操作:打标签(Tag)
作用:为特定提交打标记,便于快速回滚到稳定版本。
常用命令:

  1. 查看标签:git tag。
  2. 创建标签:git tag [标签名](如git tag 测试4)。
  3. 查看标签详情:git show [标签名](如git show 测试1)。
    应用场景:上线前打标签,若出现问题可通过标签对应的提交ID回滚。

总结:

  1. git reset适用于个人分支或明确无协作的场景,需谨慎使用强制推送。
  2. git revert是协作开发的安全选择,通过新增提交抵消变更,避免历史记录丢失。
  3. 打标签可辅助版本管理,为关键节点提供快速回滚的锚点。