在Git中撤回最近的commit的多种方式小结

 更新时间:2025年10月28日 09:26:31   作者:myflwq  
在我们使用git作为版本控制工具进行代码管理之后,经常性的会碰到一个问题:git commit后,如何撤销最近的一次commit,所以本文给大家介绍了在Git中撤回最近的commit的多种方式的相关资料,需要的朋友可以参考下

在 Git 中撤回(撤销)最近的 commit 有多种方式,具体取决于你的需求。以下是常见场景和对应的命令:

1. 撤回 commit 但保留修改(保留工作目录文件)

  • 适用于:需要修改 commit 内容后重新提交
git reset --soft HEAD^
  • 效果
    • 撤销最后一次 commit
    • 代码改动保留在暂存区git status 显示已 add 状态)

2. 撤回 commit 并放弃修改(彻底删除改动)

  • 适用于:放弃最后一次 commit 的所有修改(谨慎使用!)
git reset --hard HEAD^
  • 效果
    • 撤销 commit
    • 代码改动完全消失(不可逆操作!)

3. 撤回 commit 但保留修改在工作目录

  • 适用于:重新选择部分文件提交
git reset HEAD^
# 或
git reset --mixed HEAD^  # (默认选项)
  • 效果
    • 撤销 commit
    • 代码改动保留在工作目录git status 显示未 add 状态)

4. 撤回多个 commit

  • 撤回最近 2 次 commit(保留修改):
git reset --soft HEAD~2

5. 已推送到远程仓库的撤回

  • 如果 commit 已推送到远程分支(如 origin/main),需要强制推送:
git reset --hard HEAD^    # 本地撤回
git push --force origin 分支名  # 强制覆盖远程
  • 警告:强制推送会覆盖远程历史,确保团队其他成员知晓!

替代方案:创建反向 commit(推荐用于公共分支)

  • 用新 commit 抵消旧 commit 的改动(不修改历史):
git revert HEAD
  • 效果
    • 生成一个新 commit 来撤销上一次 commit 的改动
    • 安全适用于已推送的 commit

总结场景选择:

需求命令
修改 commit 内容重新提交git reset --soft HEAD^
完全放弃最后一次 commitgit reset --hard HEAD^
保留改动并重新选择文件提交git reset HEAD^
安全撤销已推送的 commitgit revert HEAD

注意:所有 HEAD^ 可替换为具体 commit hash(如 a1b2c3d)以撤销更早提交。

到此这篇关于在Git中撤回最近的commit的多种方式小结的文章就介绍到这了,更多相关Git撤回最近的commit内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 2020最新版vscode格式化代码的详细教程

    2020最新版vscode格式化代码的详细教程

    这篇文章主要介绍了2020最新版vscode格式化代码的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • git add -A 和 git add . 的区别详解

    git add -A 和 git add . 的区别详解

    这篇文章主要介绍了git add -A 和 git add . 的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Windows系统下安装GIt及GIT基本认识和配置

    Windows系统下安装GIt及GIT基本认识和配置

    这篇文章主要介绍了Windows系统下安装GIt及GIT基本认识和配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 写给正在读计算机专业的同学 该如何学习

    写给正在读计算机专业的同学 该如何学习

    现在IT新技术日新月异。就常用编程语言而言,有c/c++、汇编、java,c#、Python等;操作系统平台有unix/linux,windows系列
    2009-11-11
  • 高性能WEB开发 web性能测试工具推荐

    高性能WEB开发 web性能测试工具推荐

    WEB性能测试工具主要分为三种,一种是测试页面资源加载速度的,一种是测试页面加载完毕后页面呈现、JS操作速度的,还有一种是总体上对页面进行评价分析,下面分别对这些工具进行介绍,如果谁有更好的工具也请一起分享下。
    2010-05-05
  • 2013年CIO需要知道的八句格言

    2013年CIO需要知道的八句格言

    2013年CIO需要知道的八句格言,更简单更努力
    2012-12-12
  • 如何在网页中显示服务器时间

    如何在网页中显示服务器时间

    在网页上显示时间,如果取的是用户本机的时间,由于用户的时间往往不准确,所以显示的有问题。而服务器时间一般不会误差太大,所以最好显示服务器时间
    2013-03-03
  • 一不小心git rebase后出现(master|REBASE 1/10)的问题及解决办法

    一不小心git rebase后出现(master|REBASE 1/10)的问题及解决办法

    这篇文章主要介绍了一不小心git rebase后出现(master|REBASE 1/10)的问题及解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • vscode eslint插件报错Parsing error: Invalid ecmaVersion问题

    vscode eslint插件报错Parsing error: Invalid 

    这篇文章主要介绍了vscode eslint插件报错Parsing error: Invalid ecmaVersion问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Git commit与pull的先后顺序及说明

    Git commit与pull的先后顺序及说明

    这篇文章主要介绍了Git commit与pull的先后顺序及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论