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的時候)