Git之reset和revert的区别......呱~
2018-02-12 本文已影响8人
tobbyvic
- 首先讲一下reset
首先看一下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
- 下面来讲一下revert
下面举一个栗子
首先,建立一个新的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还是一直向前