git reset [--hard | soft | mixed | merge | keep ]git
将当前分支重设到指定的<commit>(默认是HEAD,即最新提交)。而且根据[mode]参数能指定重置(reset)idex或是working directory。ide
1.--softspa
版本库(repository):HEAD 指向指定<commit>3d
暂存区(index):不重置到指定<commit>,此次<commit>以后的全部变动都撤销到此blog
工做区(working directory):无变化rem
egit
当前分支是master,<commit>C是最新提交,即HEAD指向<commit>Cast
执行:class
$ git reset --soft HEAD~1im
执行后:
①版本库:HEAD指向<commit>B;②暂存区:<commit>C撤销到暂存区;③工做区:无变化
执行:
$ git status
能够看到<commit>C撤销到了暂存区,处于"Changes to be committed"状态。
2.--mixed(默认模式)
版本库:HEAD 指向指定<commit>
暂存区(index):重置到指定<commit>
工做区(working directory):此次<commit>以后的全部变动都撤销到此
eg
当前分支是master,<commit>C是最新提交,即HEAD指向<commit>C
执行:
$ git reset --mixed HEAD~1
执行后:
①版本库:HEAD指向<commit>B;②暂存区:重置到<commit>B;③工做区:<commit>C撤销到工做区
执行:
$ git status
能够看到<commit>C撤销到了工做区,处于"unstage"状态。
3.--hard
版本库:HEAD 指向指定<commit>
暂存区(index):重置到指定<commit>
工做区(working directory):重置到指定<commit>
注意:工做区未add的修改和暂存区未commit的修改,所有丢弃。(若是想回到最新提交可用 git reflog 查看commit号 而后再利用本命令恢复)
eg
当前分支是master,<commit>C是最新提交,即HEAD指向<commit>C
执行:
$ git reset --hard HEAD~1
执行后:
①版本库:HEAD指向<commit>B;②暂存区:重置到<commit>B;③工做区:重置到<commit>B
执行:
$ git status
能够看到工做空间是干净的
4.--merge
不经常使用
5.--keep
不经常使用