git版本另类回退

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

你可能感兴趣的:(doc)