Git reset 的hard、soft、mixed参数对比
分区概念
先要清楚在本地,git会分三个区:工作区、暂存区、本地库。
当使用去做版本移动的时候,那么在使用【--hard
】、【--mixed
】、【--soft
】是不一样的。
1. --soft参数
git reset --soft abcdef
- 仅仅移动本地库
HEAD
指针
仅仅是把本地库的指针移动了,而暂存区和你本地的代码是没有做任何改变的。但是这个时候你上次提交到本地库的代码状态是绿色的,即你未做【commit
】操作。
2. --mixed参数
git reset --mixed abcdef
- 移动本地库
HEAD
指针 - 重置暂存区
不仅移动了本地库的指针,同时还把暂存区的代码也做了移动。也就是说你上次添加到暂存区的代码,现在变成了红色,即未做【add
】操作。如果不写--mixed
,默认也是此参数。
3. --hard参数
git reset --hard abcdef
- 移动本地库
HEAD
指针 - 重置暂存区
- 重置工作区
不用解释了,除了上面描述的,同时你本地的代码就是你回退的版本代码。
不过很多时候,我们在回退更多的是要保留本地代码的,即使用--mixed
参数。除非你是重新拉取一份,那可以使用--hard
参数。
参考文章:https://blog.csdn.net/weixin_42740530/article/details/115914113
[Haima的博客]
http://www.cnblogs.com/haima/