重置命令。有两种用法,即文件版本和提交版本。

先看文件版本,也就是加了 --file,主要用于未提交的状态,通常视为了取消暂存,相当于撤销add操作,并不会修改head代表分支的指向。

如果没有commit id,那么就是用使用HEAD。

 

提交版本,无 --file参数,通常用于已经的状态。希望将head代表的分支重新指向一个提交位置。

这个命令其实是一个逆向的

修改文件-add-commit的过程。

 

假设现在是一次已提交状态版本为A,reset到之前的B版本,按照上面的逆向过程:

运行reset --soft,只把引用指向了新的提交B,新旧提交之间的改动放在了暂存区里。

如果运行git reset --mixed(或者直接git reset),除了会移动引用到B,还会把暂存区撤销,也就是将改动放到了工作区,即add之前的状态。

如果运行git reset --hard,除了会移动引用到B和暂存区撤销以外,还会清除工作区,相当于修改之前的状态,即没有修改任何文件,也就是真正指向了B,没有任何修改。

 

 

用法:

首先会移动HEAD到指定的commit,然后有三种选项:

--mixed:默认,只修改暂存区;

--soft:工作区和暂存区都不会修改;

--hard:工作区和暂存区都修改。

【git】reset 命令_工作区

【git】reset 命令_git_02