惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
PCI Perspectives
PCI Perspectives
T
Tailwind CSS Blog
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
V
V2EX
D
Docker
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
H
Help Net Security
The Register - Security
The Register - Security
宝玉的分享
宝玉的分享
C
Check Point Blog
T
Threatpost
The GitHub Blog
The GitHub Blog
P
Privacy International News Feed
G
Google Developers Blog
博客园 - Franky
爱范儿
爱范儿
T
Tor Project blog
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
G
GRAHAM CLULEY
雷峰网
雷峰网
Cyberwarzone
Cyberwarzone
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
Vercel News
Vercel News
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
Last Week in AI
Last Week in AI
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
K
Kaspersky official blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Project Zero
Project Zero
F
Fortinet All Blogs
AWS News Blog
AWS News Blog
The Cloudflare Blog
C
CERT Recently Published Vulnerability Notes
I
InfoQ
Spread Privacy
Spread Privacy
T
Tenable Blog

宏尘极客

halo-theme-dream2.0-plus 主题-新版朋友圈配置说明 halo-theme-dream2.0-plus 主题 1.20.2 版本-留言板配置说明 微信红包封面-马到功成 Windows11彻底关闭自动更新指南 WSL2 Docker 资源配置指南 绿联Pro 安装Dos游戏中文版webui,一个可以浏览器内玩dos游戏的容器 绿联Pro 安装 Stirling-PDF-V2 - 强大的本地托管基于 Web 的 PDF 操作工具 绿联Pro 部署在线游戏机 绿联Pro 安装OpenList一个支持多种存储的文件列表程序 绿联Pro 部署Memos - 轻量级自托管备忘录中心 绿联Pro 安装 Stirling-PDF - 强大的本地托管基于 Web 的 PDF 操作工具 绿联Pro 部署Upage - 基于大模型的可视化网页构建平台,Lovable 开源替代 不蒜子数据同步工具使用指南 绿联Pro 部署 PostgreSQL 数据库 绿联Pro 自建不蒜子统计服务,替代Dream2.0 Plus主题页脚统计数据 1panel使用编排模板部署不蒜子服务,自建不蒜子统计服务,替代Dream2.0 Plus主题页脚统计数据 绿联Pro 安装Photopea,轻量在线PS工具 绿联Pro 安装禅道(Zentao),一款功能强大、全面的敏捷项目管理软件 绿联Pro 安装MeterSphere,新一代的测试管理和接口测试工具 Docker Compose 标签介绍与示例指南 绿联Pro 安装Meilisearch 搜索引擎,为halo博客提供增强搜索引擎 解析 <meta> 标签的全局 Referrer 策略设置 电线粗细选择与家用大功率电器布线指南 Nginx 防盗链配置介绍 Nginx 反向代理简介 绿联Pro 部署meting-api服务并使用lukcy反向代理,自建音乐API服务 1panel使用编排模板部署meting-api服务,自建音乐API服务 java开发 - 通过客户端访问接口获取接口服务器实际部署地址 绿联Pro 部署MediaGo,跨平台视频提取工具 C# 自定义事件与委托 绿联Pro 安装Umami,使用MySQL数据库,为你的网站添加网站监控
Git revert 撤销已推送到服务器的提交详解
宏尘 · 2025-05-24 · via 宏尘极客

1. 为什么需要撤销已推送的提交?

在团队协作开发中,有时我们会不小心将错误的代码推送到远程仓库。这时候不能简单地使用 git reset,因为它会重写提交历史,影响其他协作者。git revert 是更安全的解决方案。

2. git revert 简介

git revert 命令会创建一个新的提交,这个提交会撤销指定提交所做的更改。这种方式不会修改项目历史,而是添加一个新的提交来"回滚"之前的更改。

3. 使用 git revert 的基本步骤

3.1 查看提交历史

首先,我们需要找到要撤销的提交的哈希值:

git log --oneline

输出示例:

a1b2c3d (HEAD -> main) 添加新功能
e4f5g6h 修复bug
i7j8k9l 初始提交

3.2 执行 revert 操作

假设我们要撤销 a1b2c3d 这个提交:

git revert a1b2c3d

3.3 解决可能的冲突

如果撤销的提交与当前代码有冲突,Git 会提示你解决冲突。解决后:

git add .
git revert --continue

3.4 推送更改到远程仓库

git push

4. git revert 的高级用法

4.1 撤销多个连续提交

git revert older_commit^..newer_commit

4.2 撤销但不自动提交(用于修改撤销内容)

git revert -n a1b2c3d

4.3 撤销合并提交

git revert -m 1 merge_commit_hash

5. 实际示例

假设我们有以下提交历史:

d467890 (HEAD -> main) 添加支付功能
c356781 更新用户界面
b245670 修复登录问题
a123456 初始项目结构

要撤销"添加支付功能"这个提交:

git revert d467890

Git 会打开编辑器让你编辑 revert 提交的信息,保存退出后,历史中将新增一个撤销提交。

6. 注意事项

  1. revert 会创建一个新的提交,不会删除原有的提交

  2. 对于已经 revert 的提交,再次 revert 这个 revert 提交可以恢复原更改

  3. 对于合并提交,需要使用 -m 选项指定要保留的主线

7. 与其他撤销命令的比较

  • git reset:重写历史,适合本地未推送的更改

  • git checkout:丢弃工作目录的更改

  • git revert:安全撤销已推送的更改

通过合理使用 git revert,你可以安全地撤销已推送到远程仓库的更改,而不会影响团队其他成员的工作。