git merge錯誤的分​​支後又提交到遠端倉庫了,該怎麼恢復回去
某草草
某草草 2017-05-02 09:50:50
0
2
936

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

某草草
某草草

全部回覆(2)
某草草

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

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

git log

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

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

git reset --hard 664d6cf35a7

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

git push origin --delete master

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

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

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

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

大家讲道理

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板