2012-03-14 46 views
1

我一直在本地分支branch_a中進行更改。我認爲這些變化需要融入主人,所以我融入了當地的主人。然後,我繼續在branch_a中工作,偶爾將其他ppl的最新更新拉入本地主服務器,然後將其合併到branch_a中。當我已經與本地分支來回合併時,在主服務器上使用git重置

現在事實證明,他們不希望從master中的branch_a發生這些更改。我如何在幾個月前將我的主服務器恢復到原始狀態(我從branch_a合併的結果是已提交但未推送的)。我不能重置我可以,因爲我的本地分支branch_a是依賴於由於從主合併(雖然我只想從遠程主分支的變化,我沒有什麼東西在我的本地主人 - 什麼都不想保留無論如何 - 這只是我合併另一個分支後讓它工作的很好)。我可以rebase branch_a刪除我的本地主分支上的依賴關係,然後重置?或者我應該使用還原,這樣歷史不會被刪除? (基本上我不希望主人混淆我合併後的本地合併和微小修復)。

回答

1

您可以通過多種不同的方式來做到這一點。當然你可以重置你的主分支。爲了擺脫您的合併branch_a到主人你可以:

git fetch origin 
git checkout master 
git reset --hard origin/master 

既然你還沒有推你的合併branch_a改變這會讓你的主點,這將被剝去branch_a變化的當前遠程主。

現在,假設您想保留branch_a,但沒有來自master的合併更改,則可以交互地重定義該分支並簡單地刪除合併提交。

git checkout branch_a 
git rebase -i HEAD~20 (assuming 20 commits back in history) 

這將啓動一個編輯器,你可以做各種事情,並會是這個樣子:

pick 23kasjd foo 
pick sjd3456 goo 

只需刪除是合併的提交來自主設備的線路和保存。 rebase將繼續,並且branch_a歷史將被重寫,並且忽略歷史記錄中的這些提交。

+0

好吧,但是如果我想保持branch_a原樣,也就是保留我與主合併的東西(這將是將最新更新拉入本地主節點後產生的更改,然後將這些更新合併到branch_a)。我應該改變branch_a而不刪除任何東西嗎?還應該在分配我的主分支之前重新綁定branch_a?謝謝 – astrogirl 2012-03-15 17:13:22

+0

在開始搞亂之前,在master上重新設置branch_a可能是個好主意。 – ralphtheninja 2012-03-15 17:51:02

相關問題