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

所属分类: 网络编程 / 相关技巧 阅读数: 1796
收藏 0 赞 0 分享

撤销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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

更多精彩内容其他人还在看

使用Python解决Windows文件名非用反斜杠问题(python 小技巧)

要想让你的 Python 代码同时在 Windows 和 Mac/Linux 上工作,你需要处理不同系统文件名用不同斜杠的问题。而 Python 3 有一个名为「pathlib」的新模块,可以帮你解决这个麻烦,需要的朋友可以参考下
收藏 0 赞 0 分享

VSCode 使用Settings Sync同步配置(最新版教程,非常简单)

这篇文章主要介绍了VSCode 使用Settings Sync同步配置(最新版教程,非常简单),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

重装win10系统超详细的图文教程(适用所有windows系统)

这篇文章主要介绍了重装win10系统超详细的图文教程(适用所有windows系统),非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

ReactJS中的自定义组件实例代码

React 是一个用于构建用户界面的 JAVASCRIPT 库。这篇文章主要介绍了ReactJS中的自定义组件的代码讲解,需要的朋友可以参考下
收藏 0 赞 0 分享

在命令行用 sort 进行排序的方法

这篇文章主要介绍了在命令行用 sort 进行排序的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

scala中停止循环的三种方式(推荐)

这篇文章主要介绍了scala中停止循环的三种方式,文中给大家提到了循环语句的流程图,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

深入讲解HTTPS中的加密算法

前段时间对接了好多外部接口,很多都是https的,还有证书,还有一些加密的。对这块不是太了解,就查资料整理总结实践下。下面这篇文章主要给大家深入的介绍了关于HTTPS中加密算法的相关资料,需要的朋友可以参考下。
收藏 0 赞 0 分享

HTTP协议简介_动力节点Java学院整理

这篇文章主要介绍了HTTP协议简介,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

HTTP协议入门_动力节点Java学院整理

这篇文章主要为大家详细介绍了HTTP协议入门的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

HTTP协议详解_动力节点Java学院整理

这篇文章主要介绍了HTTP协议详解,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器
收藏 0 赞 0 分享
查看更多