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 分支修改的版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章