【原】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,保留编辑器改动代码git

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

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

3.使用参数--hard,如git reset --hard <commit ID>——此方式很是暴力,所有撤销,慎用

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

开始撤销commit的示例:

输入git log,咱们能够看到最近的3次提交,最近一次提交是test3,最先的一次是test1,其中一大串黄色的字母commit id(版本号)命令行

若是嫌输出信息太多,可加上--pretty=oneline参数,即 日志

git log --pretty=oneline

 

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

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

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

git reset --hard HEAD^

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

办法其实仍是有的,只要上面的命令行窗口尚未被关掉,记录仍是在,使用命令git reset --hard commit_id能够回退到指定的版本,好比当前例子,咱们找到那个test3的commit id是e09af7ae711e2a79c15144c1e792fb2e27d201ff,而后输入下面指令就回来了test

git reset --hard e09af7ae711e2a79c15144c1e792fb2e27d201ff

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

git reset --hard ab7b

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

相关文章
相关标签/搜索