git reset --hard,git reset --soft和git revert的区别

首先我们的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的内容。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容