2011-05-16 54 views
6

我做了一件愚蠢的時候,突然合併的話題支進我的主分支,然後又將其活到github上(在別人拉)。只是爲了確保這是一個完全不知所措的錯誤,我將它提交給我的生產服務器。撤消意外git的合併沒有迴歸歷史

我掛我的頭在恥辱的時候適量,現在我需要弄清楚如何有效地回滾代碼提交進展的同時提交歷史。

爲了讓我的生產代碼,以正確的結賬,我跑git checkout hashoflettersandnumbers,這就是犯我想生產HEAD是。

我運行了git reset hashoflettersandnumbers,然後用git clean從該提交中刪除了前進的更改,但似乎無法讓該代碼成爲主分支的HEAD並進行新的提交。

+0

+1「麥[和]確保它是一個完全魯鈍的錯誤」。 [我最近]苦難愛公司。 – ruffin 2012-08-29 18:13:20

回答

5

在每個分支使用git revert。這將創建一個新的提交,以保留您在所有永恆中的錯誤,但可以讓您恢復與合併前相同的樹。

例如,如果123456是合併提交...

$ git checkout master 
$ git revert 123456 
$ git checkout topic-branch 
$ git revert 123456 

這是假設,這是不是一個「快進」合併。

+1

謝謝@dietrich。對於我自己的參考,當我這樣下一次谷歌,這是最安全,最直觀的,回到一個穩定的承諾,一個承諾的時間和使用標誌--no提交,以防止一在一次一個承諾,而打了退堂鼓。另外,使用-m 1進行合併提交。 – brycemcd 2011-05-16 19:56:38