搜尋

首頁  >  問答  >  主體

git merge錯誤的分​​支後又提交到遠端倉庫了,該怎麼恢復回去

1.deploy分支是生產環境的分支,master是主開發分支。
2.deploy分支有幾個檔案配置和master分支的不一樣,通常都是將master分支合併到deploy分支,並不會改變deploy分支下的設定檔資訊。
3.不小心把deploy分支合併進了master分支,導致master分支下的配置文件被改成了deploy分支下的,並且做了push,遠程master分支下的配置文件也成deploy下的了。
4.改回了master分支下的配置文件,重新做了push,但是現在不敢往deploy分支合併了,因為擔心master分支下的配置會替換掉deploy下的。
現在想恢復master分支之前的版本,以及遠端倉庫內的版本。該怎麼做?

某草草某草草2799 天前954

全部回覆(2)我來回復

  • 某草草

    某草草2017-05-02 09:52:50

    其實這很容易的,樓主可以先在本地進行回退操作:

    • 透過提交日誌找回先前master的狀態對應的雜湊值

    git log

    複製其雜湊值,假如是664d6cf35a7。

    • 然後時光穿梭,回到之前的那個狀態

    git reset --hard 664d6cf35a7

    回退好之後,刪除遠端的master分支:

    git push origin --delete master

    如果刪除不了的話,可以先在遠端將預設分支設定為另一個分支,如deploy。如果樓主的遠端倉庫在github上的話,可以點選對應倉庫的setting->branches-.default branches,修改即可。

    然後再執行上面的指令刪除遠端master分支。

    刪除之後,現在就可以重新推送master分支了,這樣會在遠端倉庫重新建立一個master分支。推送好之後,再將遠端的預設倉庫重新修改為master。

    現在這個狀態基本上就跟以前一樣了。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-02 09:52:50

    回退本地分支 > 刪除遠端分支 > 推送本地分支 (也就是建立新的遠端分支)

    不過這種方法對 master 這類的保護分支並不適用,可以用下面的方法:

    回退本地分支 > 強行推送本地分支 (強制推送以覆蓋遠端分支內容)

    回覆
    0
  • 取消回覆