git reset
用于将当前HEAD
(版本库中该分支上的最新版本)复位到指定状态,可用于撤销之前的一些操作。
1、git reset --soft
我们先修改并commit一次,message为1,然后再修改一次,commit且message为2,git log
一下得到以下画面
复制message为1的哈希码,执行git reset --soft 5034b2656e6797a7f3dcfd137d487062a8dff699
,并且git log
之后
commit2已经没有了,但是commit2修改的代码还在,只是回到了add过但是未提交的状态
2、git reset --mix
默认
重复刚刚的两次commit,这次执行git reset --mix 第一次哈希码
,并git status -sb
依旧回到了commi2没有的状态,但是代码还在,只是没有add的状态
3、git reset --hard
依旧是这两次commit,执行git reset --hard 第一次哈希码
,并git status -sb
commit2的代码已经没有了,文件完全回到commit1的状态
4、git revert
同样是两次commit,这次使用git revert HEAD
,并且git status -sb
后显示已经没有更改过的文件,commit2的代码也没有了,但是git log
可以查看到revert的commit
因此
git revert
可以用在公共分支上,git reset
应该用在私有分支上。也可以把git revert
当作撤销已经提交的更改,git reset
用来撤销没有提交的更改。
网友评论