IT小白进阶之路我是程序员;您好程先生;叫我序员就好了Web 前端开发

Git之reset和revert的区别......呱~

2018-02-12  本文已影响8人  tobbyvic

首先看一下git的指向(HEAD)
正常情况下指向是随着每次commit向前走的


image

如图,此时如果执行

git reset --hard HEAD^

这句话便是reset到HEAD的上一个commt,就会变成下面这样


image

此时即便是git log也只有

$ git log
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Tue Aug 20 14:53:12 2013 +0800

    add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Mon Aug 19 17:51:55 2013 +0800

    wrote a readme file

这两个。。

大致原理如图:


image

到4的时候git log 只有1、2、3'、4

image

下面举一个栗子
首先,建立一个新的resposity然后进行第一次commit


image

然后再进行两次commit


image

此时的git log 就是三个commit


image

然后revert 第二个 commit
就是在软件里点击revert即可,如图所示


image

然后会出现让你进行merge


image

此时文件的状态是这样的


image

这时merge的话删除

<<<<<<< HEAD
这是第一个commit
这是第二个commit
这是第三个commit
=======

以及最后一句即可

这一段即可,这是软件提示的
然后便如我们所说的,2、3的commit都被复原了,文件变成了

这是第一个commit

这时删除完不进行更改的话,可以直接commit,然后文件就是

这是第一个commit

此时git log的话 有1、2、3、还有最后这一次commit 这4个 HEAD还是一直向前

上一篇下一篇

猜你喜欢

热点阅读