git reset –option <commitid>回退命令,option有三个参数可选:
## git reset –mixed [commitid]
这也是默认方式(即不带参数默认是这种),回退暂存区和版本库信息,工作区的源码不会变化,可以重新add,重新commit。
## git reset –soft [commitid]
回退版本库信息,暂存区和工作区都不会变化,如果还要提交,直接commit即可
## git reset –hard [commitid]
彻底回退,3个区都回退到历史某个版本
## 3个区都回退到历史某个版本回退彻底程度:
> **hard**(work,stage,repo) > **mixed**(repo,stage) > **soft**(repo)
>
## 场景:
> `git reset –hard` 抛弃目标节点后的所有commit(可能觉得目标节点到原节点之间的commit提交都是错了,之前所有的commit有问题)。
> `git reset –soft`或 `git reset --mixed` 假如我们想合并「当前节点」与「reset目标节点」之间不具太大意义的 commit 记录(可能是阶段性地频繁提交,就是开发一个功能的时候,改或者增加一个文件的时候就commit,这样做导致一个完整的功能可能会好多个commit点,这时假如你需要把这些commit整合成一个commit的时候)