$ 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 分支修改的版本