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 = 不撕纸,再写一页新的,把之前写错的划掉 → 本子完整,所有人都能正常接着看。
相关推荐
Leo_Mr2 小时前
Vue3 项目配置 Git 提交规范(企业通用方案:husky + commitlint + cz-git + lint-staged)
git
jyOverQ3 小时前
Git rebase 和 merge 有什么区别?什么时候该用哪个?
git
晗夜未央3 小时前
跨仓库 Skill 换台电脑就失效?用 Git remote 校验项目
人工智能·git·python
Lsetea3 小时前
Git访问HTTPS证书不受信任:用URL级sslCAInfo限定私有CA范围
git·https·开发工具·ssl证书·ca证书
এ慕ོ冬℘゜19 小时前
Git 基础入门|和 SVN 对比 + 四大区域 + 常用命令详解
git·svn
DevLoom_1 天前
macOS 命令行 curl/git 报 SSL 证书错误?eMudhra 事件完整修复指南
git·macos·ssl
keyipatience1 天前
Git学习(4)Git分布式优势与实战配置全解析
git·学习
SH的全栈笔记1 天前
敲下 git add 的那一刻,.git 里多了什么
git·后端
正经教主1 天前
【FDE系列】阶段2:Day 45(up详细版):综合实战 — Docker + Nginx + Git 完整部署与本周收官
人工智能·git·nginx·docker·fde
Change!!2 天前
git小乌龟,切换到新分支处理
git·git切到新分支,旧代码贮藏