git reset 与 git revert 区别

先设定场景

你们两个人:你 + 同事小王共用一个远程代码仓库(GitHub/GitLab 那种)

时间线按顺序来:

  1. 原本代码版本:版本 A(大家都一样)
  2. 改了代码,提交了 版本 B
  3. 你把版本 B 推到远程
  4. 小王已经拉过代码,他本地现在也是:版本 A → 版本 B

现在你后悔了,不想要版本 B 了,想回到版本 A

第一种:你用了 git reset(危险 ❌)

你本地操作

你执行 git reset,直接把本地历史删掉版本 B 你本地变成:只有版本 A,版本 B 凭空消失了

然后你强行推远程:

复制代码
git push -f

远程仓库也被你强行改成:版本 B 被抹掉、没了

现在出事了!

你这边:正常,回到 A 了

小王那边就炸了:

小王本地明明有:A → B 但远程现在变成:只有 A,B 不见了

小王一拉代码 Git 直接懵了:

我本地有个版本 B,远程怎么凭空消失了?历史对不上、时间线断裂、版本冲突爆炸

小王直接报错、拉不下来、合并不了、代码崩乱团队直接没法协作了。


第二种:用 git revert(安全 ✅)

同样场景:你不想要版本 B,想变回 A

你执行:

复制代码
git revert 版本B的id

Git 不会删掉历史!而是自动帮你再生成一个 版本 C 版本 C 的作用就是:把版本 B 做的修改,全部反向撤销

时间线变成:A → B → C

  • 代码效果:回到跟 A 一模一样
  • 但历史记录完整保留,没有任何记录被删除

你推到远程,小王拉代码:正常更新、正常合并、完全不报错、不乱版本

一句大白话总结

  • git reset = 偷偷把之前那页纸撕掉,假装没写过 → 别人手上还留着旧纸,两边对不上,直接崩。
  • git revert = 不撕纸,再写一页新的,把之前写错的划掉 → 本子完整,所有人都能正常接着看。
相关推荐
向日的葵0067 小时前
大模型之git操作(第五章)
git
kyriewen11 小时前
我让AI替我写Git提交信息,老板以为我每天工作16小时
前端·javascript·git
難釋懷14 小时前
Redis网络模型-单线程和多线程网络模型变更
网络·redis·git
不做无法实现的梦~14 小时前
Git 新手到团队协作与 GitHub/GitCode 指南
git·github·gitcode
谷哥的小弟14 小时前
(最新版)Git&GitHub实操图文详解教程(02)—安装Git
git·github·安装·配置·下载·图文教程
高斯林.神犇14 小时前
Git远程仓库操作流程
git
谷哥的小弟15 小时前
(最新版)Git&GitHub实操图文详解教程(01)—Git的起源
git·github
小此方15 小时前
Re:Linux系统篇(十四)工具篇 · 五:Git 高效协作实战与“三板斧”秘籍
linux·git·github