重置命令。有两种用法,即文件版本和提交版本。
先看文件版本,也就是加了 --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:工作区和暂存区都修改。