2015-08-21 105 views
8

我希望標題不會很混亂。GIT:如何在恢復合併後從分支中提取更改

歷史(我做了什麼又名錯):

比方說,有兩個分支,碩士和功能。功能是一個分支,我保留一個更長的功能項目,並不時使用該分支上的git pull origin master來保持主代碼中的更新。

我不小心將功能合併並推送到主。

它沒有準備好,所以我試圖恢復它。我嘗試以下:http://sethrobertson.github.io/GitFixUm/fixup.html#pushed_new_merge 但我想我做錯了。我用: git回覆 然後提交回復並推送它。問題似乎已解決 - 功能發生變化,不再在主設備上。

現在的問題是,當我嘗試在功能分支上使用git pull origin master時,它不斷刪除我的文件並恢復所有更改,因爲它正在與還原提交合並。 master的頭部已經過去了,我需要從更新的提交中提取更改以繼續使用特性分支。

我GOOGLE的話題和最有前途的答案是這樣的: https://metlos.wordpress.com/2012/01/13/git-merging-after-a-revert/ 但這裏的合併遠不止我想(有主,我需要高手功能)等方式。

我在考慮創建master的克隆分支,然後應用該分支上鍊接的指令,這樣我就可以得到我需要的結果,但恐怕這是一個臨時解決方案,我需要隨時申請從主人拉。

我試過這個故事最好不要混亂,如果有什麼是不可理解的,我會澄清。

回答

3

如果您還沒有推主分支的團隊/公共倉庫,你就掌握了拉之後都沒有提交,你可以在分支做

git reset --hard **the-commit-before-pulling-feature-branch** 

。這將有效地消除歷史錯誤並給出清晰的歷史記錄。

否則,(也就是說,如果你已經推高手回購或做了主人更多的提交),你可以拉高手,有效地恢復了還原後做

git revert **the-revert-commit** 
功能分支

承諾。

+1

我推動它,並提交了新的提交。你的解決方案就像一個魅力,起初我得到了'無法恢復'錯誤,但它只是一個需要手動合併的文件。非常非常感謝你。 – effique