2015-04-04 88 views
1

看來,我的一個項目的master分支進入了一個完全錯誤的方向。因此,我想要做的是:簽出一個較舊的提交併創建一個新的主分支?

  • 結帳舊的承諾
  • 使用一個新的分支
  • 把這種新的分支master開發的東西進入一個不同的方向,並停止舊master分支

我該怎麼做?

我已經看到,我可以創建一個新的分支branch1然後用

$ git branch -m master old_master 
$ git branch -m branch1 master 

備份舊master,然後新的分支重新命名爲master,但我不知道是否有任何缺點在此,以及是否有更好的方法來實現我的目標(在這種情況下「更好」意味着什麼)。

任何想法或提示?

PS:我想要「恢復」的更改已被推送,所以我不能只刪除它們。

+2

你說的方法真的很好。使用硬重置也是可以的,如果你打開這個開發歷史直到那一點。 – 2015-04-04 10:33:22

+0

@mu無如果你把它變成答案,我會接受它。 – 2015-04-04 14:46:37

回答

1

你說的方法確實很好。只有當你決定放棄發展歷史時,才能使用硬重置。

基本上,請執行下列操作

git branch -m master old_master 
git branch -m branch1 master 

你完成之後,你將需要強制推主(因爲你的本地分支歷史是從遙控器上的完全不同)

git push -f origin master 

另請注意,萬一有多個開發人員在主分支上工作,他們的本地主分支可能會損壞,因此最好在他們的機器上重新創建主分支。

git branch -D master 
git branch master --track origin/master 

強制推送和(可能)重新創建主分支將需要與硬重置以及。

1

1.You必須在master分支硬復位到要回滾到

git reset --hard <commit_id> 
的SHA-ID
  • 一邊做推,你就必須使用-f選項
  • 您也可以嘗試做一個混帳恢復,而不是混帳重置

    PS:如果你想保留歷史周圍,你可以標籤M帶標籤名稱的aster分支,甚至創建一個名爲master_old的分支

    相關問題