搜尋

首頁  >  問答  >  主體

git merge了一個分支到master之後,提交到了github,怎麼在github也撤回merge。

如題,手賤把還沒有完成的程式碼從分支merge到了master上,並且git push到了github上,之後在dev上繼續完善程式碼,然後想撤回這個合併的時候發現撤回本地的合併之後,不能push到github上了,顯示有衝突,不知道什麼原因。

淡淡烟草味淡淡烟草味2767 天前835

全部回覆(1)我來回復

  • 巴扎黑

    巴扎黑2017-05-02 09:49:43

    如果你是在本地 merge 的,那你可以通過 git reflog 查看你的历史操作,然后通过 git reset --hard HEAD@{n} 回退到 reflog 里面的第 n

    然後,git push origin master -f 就可以把遠端的 master 退回到之前的狀態了


    其實,既然你是 merge 的,那麼就會產生一個 merge commit。你也可以先在本地 git checkout master, 这时候你本地的 master 也应该是最新的。先 git log 看下历史记录,然后根据 commit hash,git reset --hard xxxxxx 回退一下。

    然後,同樣地,git push origin master -f 就可以更新遠端的 master了


    兩種方式同理,因為你刪掉了一個 commit,而遠程是存在這個 commit 的,這時候兩百年的歷史信息是對不上的,因此你不能直接 git push origin master
    除非你在这个 commit 之后新加了一个 commit,手动修改代码,回退到 merge 之前的状态,这样你不需要 -f,可以直接 git push origin master 更新

    回覆
    0
  • 取消回覆