2014-05-01 122 views
1

所以。我已經做了一些奇怪的步驟來得到這個結果:結帳最近創建的分支

假設我們有一個叫dev的分支。我現在在這上面。

還有一個分支叫做dev2。該分支已經遠程創建,但本地沒有。

因此,我所做的是git checkout -b dev2,它在dev分支的頂部創建了一個名爲dev2的新分支。
在此之後,我只是做了git pull origin dev2,所以它得到了所有的東西,那是在dev分支。
我收到一條消息,說我必須修復一些衝突。所以我做到了。承諾我的修復,並推動他們。現在dev2分支不是遠程之前。

有沒有辦法讓我心愛的dev2分支恢復到正常狀態?

回答

2

如果另一支dev2已經被其他人推,這種方式得到它在當地是(在:

git checkout master 
git branch -d dev2 
git fetch 
git checkout -b dev2 origin/dev2 

第二個命令刪除你做的「dev2」分支,因爲你沒有又融合東西:你只需要獲取並引用dev2

之後,您可以合併到dev2dev,並解決合併衝突,然後

注意。 :如果您已經(如git push --force dev2)推回上游回購倉庫,這將不起作用。

1

您可以檢查哪些承諾要回滾到遙控器上,則很難恢復到它

git log origin/dev2   # See history on remote 

從這個命令的輸出,確定的承諾,你要回去(對例如,3157ee3718e180a9476bf2e5cab8e3f1e78a73b7)

然後回退到提交和更新遠程

git checkout dev2    # Go to branch dev2 
git stash      # Discard your current changes 
git reset --hard <hash>  # Reset to the state of the hash 
git push --force origin dev2 # Forcefully update the remote