跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Git 撤销上一次提交:reset、revert 与 commit 修正详解

介绍 Git 撤销提交的三种主要场景及命令。本地未推送时使用 git reset --soft 保留修改或 --hard 丢弃修改;已推送到远程团队协作时推荐使用 git revert 生成反向提交以保历史记录完整;若需修正上次提交信息或补加文件可使用 git commit --amend。操作前建议备份分支,公共分支避免强制推送,误操作可通过 git reflog 恢复。

念念不忘发布于 2026/3/28更新于 2026/5/2429 浏览

Git 撤销上一次提交指南

核心原则:未推送用 reset,已推送用 revert。操作前建议备份。

为什么需要撤销提交?

  • 提交信息写错或漏写关键内容
  • 误提交了敏感文件或调试代码
  • 发现逻辑有误需重新整理
  • 团队协作中需安全回退

Git 提供了精准的撤销命令,但用错命令可能导致代码丢失。以下分场景详解。

场景一:本地提交(未推送),想保留代码修改

适用:刚执行 git commit 但还没 git push,想修改提交内容或信息。

安全操作:

# 保留修改在暂存区(推荐!可直接重提交)
git reset --soft HEAD~1
git commit -m "修正后的提交信息"

# 或保留修改在工作区(需重新 git add)
git reset HEAD~1 # --mixed 是默认参数,可省略

说明:HEAD~1 表示上一次提交,也可使用 git log 查看 commit hash 替代。

场景二:本地提交,彻底丢弃所有修改

警告:此操作不可逆,代码将永久删除。仅当确认不需要本次提交的任何内容时使用。

git reset --hard HEAD~1 

操作前必做:

git branch backup-before-reset # 先建备份分支

场景三:提交已推送到远程(团队协作场景)

黄金法则:绝不直接 reset + force push。

安全方案:用 revert 生成反向提交。

git revert HEAD # 撤销最近一次提交
# 或指定 commit hash:
git revert a1b2c3d # 按提示编辑撤销提交信息 → 保存退出
git push # 正常推送,无风险

优势:

  • 历史记录完整(原提交 + 撤销提交)
  • 不破坏他人本地仓库
  • 团队协作零冲突

附加场景:仅修正上一次提交(非撤销)

适用:漏加文件 / 改提交信息。

# 补加文件后修正
git add missed-file.txt
git commit --amend --no-edit # 保留原信息

# 或直接改提交信息
git commit --amend -m "全新提交信息"

注意:若已推送,需 git push -f(仅限个人分支!团队分支请用 revert)。

速查对比表

场景命令保留代码?影响远程?安全等级
本地修正提交git reset --soft HEAD~1是(暂存区)否高
本地丢弃提交git reset --hard HEAD~1否否低(高危)
已推送安全撤销git revert HEAD是(新提交抵消)是(新增提交)最高
修正提交内容git commit --amend是是(需强制推送)中(个人分支)

避坑指南

  1. 操作前必备份 git branch safe-backup —— 5 秒拯救未来
  2. 确认提交状态 git log --oneline -3 + git status 看清再操作
  3. 团队协作铁律
    • 公共分支(main/dev):只用 revert
    • 个人分支:谨慎使用 reset + push -f(提前告知队友!)

误操作急救

git reflog # 查看所有 HEAD 变动记录
git reset --hard abc123 # 通过 commit hash 紧急恢复

目录

  1. Git 撤销上一次提交指南
  2. 为什么需要撤销提交?
  3. 场景一:本地提交(未推送),想保留代码修改
  4. 保留修改在暂存区(推荐!可直接重提交)
  5. 或保留修改在工作区(需重新 git add)
  6. 场景二:本地提交,彻底丢弃所有修改
  7. 场景三:提交已推送到远程(团队协作场景)
  8. 或指定 commit hash:
  9. 附加场景:仅修正上一次提交(非撤销)
  10. 补加文件后修正
  11. 或直接改提交信息
  12. 速查对比表
  13. 避坑指南
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 多模态大模型综述:视觉理解、生成与 Agent 研究进展
  • NLP 领域最优秀的预训练模型详解
  • C++ 数据结构进阶:并查集原理、实现与面试实战
  • C++ 测试自动化:基于 Catch2 的三步集成方案
  • JPA 实战:CascadeType 枚举详解与 FetchType 配置指南
  • 无人机烟幕遮蔽时间优化:基于遗传算法的代码实现
  • TCP TIME_WAIT 状态的作用及服务端状态过多原因
  • 超级对齐全面综述:构建安全可靠的未来
  • URDF:ROS2 机器人模型描述格式详解
  • 基于 AI 辅助的在线考试系统全流程开发实战
  • Oracle 数据库索引原理与实战指南
  • Flutter 三方库 ethereum_addresses 的鸿蒙化适配与地址校验实战
  • 停止低效努力:如何提升思维维度实现个人成长
  • 基于腾讯云 HAI 与 DeepSeek 快速构建个人网页
  • 基于Java+Vue+MySQL的学生信息管理系统设计与实现
  • Ubuntu 前端开发环境搭建与 Vue 实战指南
  • 4G Cat.1 模组赋能 AI 教育机器人:算力与物联网融合分析
  • Visual Studio 中 GitHub Copilot 隐私设置与代码数据共享控制
  • WebView 冷启动并发初始化竞争风险分析
  • Java 文件操作与基础:流对象、数字码表及缓冲区

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online