git如何撤销commit的方法(未push)

 更新时间:2020年07月24日 10:24:50   作者:白树  
这篇文章主要介绍了git如何撤销commit的方法(未push),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

撤销commit一般用git reset ,语法如下:

git reset [ --mixed | --soft | --hard] [<commit ID>]

1.使用参数--mixed(默认参数),如git reset --mixed <commit ID>或git reset <commit ID>

撤销git commit,撤销git add,保留编辑器改动代码

2.使用参数--soft,如git reset --soft<commit ID>

撤销gitcommit,不撤销git add,保留编辑器改动代码

3.使用参数--hard,如git reset --hard <commit ID>——此方式非常暴力,全部撤销,慎用

撤销gitcommit,撤销git add,删除编辑器改动代码

开始撤销commit的示例:

输入git log,我们可以看到最近的3次提交,最近一次提交是test3,最早的一次是test1,其中一大串黄色的字母commit id(版本号)

如果嫌输出信息太多,可加上--pretty=oneline参数,即

git log --pretty=oneline

接下来,按下键盘上的字母q退出git日志,准备进行撤销commit

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交commit id,上一个版本就是HEAD^(或者HEAD~1),上上一个版本就是HEAD^^(或者HEAD~2),同理往上N个版本写N个^不太现实,我们写成HEAD~100。

现在,我们要把当前版本test3上一个版本test2,就可以使用git reset命令:git reset --hard HEAD^,再查看日志,发现已经剩下2个commit版本了

git reset --hard HEAD^

最新的那个版本test3已经看不到了,此时你想起有一行代码写得很好,想回到test3版本看下,怎么做?

办法其实还是有的,只要上面的命令行窗口还没有被关掉,记录还是在,使用命令git reset --hard commit_id可以回退到指定的版本,比如当前例子,我们找到那个test3的commit id是e09af7ae711e2a79c15144c1e792fb2e27d201ff,然后输入下面指令就回来了

git reset --hard e09af7ae711e2a79c15144c1e792fb2e27d201ff

版本号可以不用写全,输入前4位或更多也是可以,Git会自动去找,不能只写前一两位,因为Git可能会找到多个版本号。比如,看完test3版本的代码后,现在想回退到最初test1版本,我们找到那个test1的commit id是ab7b0c2b6e10a20d524156a81f6d4bc15a4ea7f3,然后输入下面指令就回来了

git reset --hard ab7b

最后在Git中,总是有后悔药可以吃的,Git提供了一个命令git reflog用来记录你的每一次命令,通过它可以查到每个commit id,方便你前进或者回退到指定的版本

到此这篇关于git如何撤销commit的方法(未push)的文章就介绍到这了,更多相关git撤销commit内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • UTF-8 编码中BOM的检测与删除

    UTF-8 编码中BOM的检测与删除

    所谓BOM,全称是Byte Order Mark,它是一个Unicode字符,通常出现在文本的开头,用来标识字节序(Big/Little Endian),除此以外还可以标识编码(UTF-8/16/32),如果出现在文本中间,则解释为zero width no-break space。
    2011-09-09
  • vscode终端输出中文乱码问题解决图文教程

    vscode终端输出中文乱码问题解决图文教程

    我们在使用vscode的时候常会遇见各种问题,下面这篇文章主要给大家介绍了关于vscode终端输出中文乱码问题解决的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • vsCode中配置setings.json的技巧

    vsCode中配置setings.json的技巧

    本文给大家分享的是一个在vsCode中配置好的setings.json的样例,可以给大家一个参考,有需要的小伙伴可以来看下
    2020-01-01
  • Spark GraphX 分布式图处理框架图算法详解

    Spark GraphX 分布式图处理框架图算法详解

    这篇文章主要为大家介绍了Spark GraphX 分布式图处理框架图算法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 音视频基本概念和FFmpeg的简单入门教程详解

    音视频基本概念和FFmpeg的简单入门教程详解

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换,这篇文章主要介绍了音视频基本概念和FFmpeg的简单入门,需要的朋友可以参考下
    2022-04-04
  • Git取消追踪多个文件或目录的实现方式

    Git取消追踪多个文件或目录的实现方式

    这篇文章主要介绍了Git取消追踪多个文件或目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-10-10
  • WebStorm 遇到的问题总结

    WebStorm 遇到的问题总结

    这篇文章主要介绍了WebStorm 遇到的问题总结的相关资料,需要的朋友可以参考下
    2017-03-03
  • 在VSCode中集成DeepSeek大模型实战指南

    在VSCode中集成DeepSeek大模型实战指南

    DeepSeek是一套先进的AI工具集,旨在为用户提供强大的自然语言处理能力和其他机器学习服务,这套工具不仅提供了预训练好的模型供快速上手使用,还支持自定义调整以满足特定应用场景的需求1,本文给大家介绍了VSCode集成DeepSeek的实战指南,需要的朋友可以参考下
    2025-02-02
  • 变量、函数、类的命名规则

    变量、函数、类的命名规则

    在阅读clean code书籍的时候,让我体会很多,因此我也用文字记录下这些有意义的知识。我认为这本书读十遍都不为过,下面我讲解一下自己的关于变量、函数、类的命名规则笔记。
    2011-08-08
  • 使用Idea自带的git功能进行分支合并过程

    使用Idea自带的git功能进行分支合并过程

    项目采用dev→qas→pre→master分支合并流程,确保代码有序集成,切换分支前需提交本地dev至远程,拉取qas最新代码,合并后直接推送,无需额外提交步骤
    2025-09-09

最新评论