首先我们的log里是有3个版本的,并且HEAD指向了第三个版本“three”
首先我们的log.png
git reset --hard
我们使用一下这个命令,把HEAD指向第二个版本看看会发生什么事,发现回到了第二次commit后的版本
2.png
git reset --soft
我们使用一下这个命令,把HEAD指向第二个版本看看会发生什么事,
发现也回到了第二个版本,但却是没有进行commit后的状态,所以感觉soft相比hard来说更加安全?
3.png
git revert
我们使用一下这个命令,把HEAD指向第二个版本看看会发生什么事
4.png
报错了.png
报错了... 好像是冲突了,应为我第二次和第三次版本的改动只是修改了1.txt的内容
重新来一下,用hard回到第一个版本,并在第三次commit时新增一个2.txt使之不冲突
爆粗了2.png
然后再revert
7.png
8.png
提示产生了一次新的commit,然后保存退出
然后发现revert是回退至HEAD指向的版本后又进行了一次commit,产生了一个版本
总结##
git reset --hard
直接将版本重置到指定版本的状态,直接删除指定版本的commit内容,同时如果本地有修改内容话也会丢失
git reset --soft
只告诉Git将其他的commit重置到HEAD,并不影响工作区文件,同样不会保留常规log
git revert
这其实算是一个进度往前走的逆向提交,也就是说HEAD版本及提交记录将会继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。