$ git reset --hard commit_id
注意:
如果該 commit_id 位於某個非 master 分支上的提交。
master ----o[m1]--o[m2]--o[m3]
| |
branch/b1 o[b1]--o[b2]--o[b3]
如圖,master 分支在 m1 提交時候,引入新分支b1,然後 b1 分支中做了b1,b2,b3修改,最後將該b1分支通過m3合併入master.在提交過程中,master 分支又合併了新的分支m2.
當前位於 m3 版本。如果想要master回退到未被b分支提交修改的版本,那麼你必須回退到 m1 版本。
如果你僅僅使用 git reset –hard b3 // 那麼你會發現 b1,b2 這些提交,在master分支上仍然有記錄。不要以爲沒有 m3 這個合併的操作,master 就真的沒有b1,b2,b3,這些記錄!
這時候,你需要通過查看b3的parents. 通常有兩個parents: m1,b2// 在網頁上查看這個 parents.
使用下面方法回退:
$ git reset --hard m1
$ git checkout master // master 即可位於沒有被 b 分支修改的版本