2013-05-28 79 views
5

如果要「撤消」功能分支,您有什麼選擇?假設您添加了一個新功能supercool-feature,您可以完成(合併到開發中並刪除功能分支),然後進入發行版。但是,那麼你的用戶真的不喜歡這supercool-feature。我怎樣才能撤銷/倒帶/扭轉已經合併到開發和發行版中的這個功能?Git-Flow撤消已完成的功能分支

我使用SourceTree來執行我的版本控制。

+1

那麼你恢復合併......顯然它的一點點比這更復雜,但細節在於你如何組織你的代碼和你的測試等。我有一種感覺,這個問題還有更多。 –

+0

這也不是一個真正的混帳流程的具體問題。 git-flow爲你做的只是從開發中創建你的特性分支,然後將其合併回開發。在git-flow中沒有什麼魔術出現,它只是混帳而已。 –

+0

@AlexBrown,那麼如何恢復合併?我不確定您是否熟悉git流程的工作方式。但是當你在git-flow中完成一個特性時,它會被合併到一個「開發」分支中,然後特性分支被刪除。當你決定發佈一個版本時,你從開發中創建一個新的分支,然後進行特定版本的更改,然後將其合併到「主」中。那麼,我將如何恢復合併到開發中的'supercool-feature'? –

回答

12

運行此命令

git revert -m 1 <sha1 of M> 

說明

你的情況是大約如下:

A-B-----C---D-M  # master 
    \  /
    X-Y---Z-  # supercool-feature 

A,B,C和d分別爲在你的主胸罩nch,X,Y和Z在你的特徵分支中。當你做了git merge supercool-feature Git爲你創建了一個「合併提交」M.此提交包含功能分支中的所有提交以及可能的修復以修復合併衝突。因此,如果你一次提交了revert,那麼你的featurebranch的每一個改變都將會消失。

+1

+1使ASCII藝術努力:) – bigge

+0

魔鬼主張:它是如何知道從supercool功能XZY中刪除所有內容,而不是從master(CD)中刪除所有內容?合併是對稱的... – mnagel

+0

合併不是對稱的。 'git merge'查看要合併的分支的變更集('git diff B ..Z')並壓縮成一個提交。 –

1

其實命令

git revert -m 1 <sha1 of M> 

其中除去中號搬回對含有X分支,Y,Z這不是主線1.