2014-02-25 54 views
4

我想了解在創造的git的工作流程Git的工作流程 - 從還原發布分支一個特性分支

我們正在考慮一次使用功能分支發展的幾個特點的問題,因此,可以說,我們有:

- F1 (Feature 1) 
- F2 (Feature 2) 
- F3 (Feature 3) 

我們剛剛完成的功能1和3,並把它們合併到我們的開發分支進行集成測試:

-F1---Commit1---Commit2---------------------------------- 
-F2--------Commit1--------------------------------------- 
-F3--------------------------Commit1--------------------- 
-Development-------Merge-F1------------Merge-F2---------- 

開發分支出血Ë dge並作爲夜間構建的一部分發布。當我們很高興有這個,這個分支合併到一個臨時分支,然後將其用於客戶端的評論:

-F1---Commit1---Commit2--------------------------------------------- 
-F2--------Commit1-------------------------------------------------- 
-F3-------------------------Commit1-----Commit2--------------------- 
-Development-------Merge-F1------------Merge-F2--------------------- 
-Staging-------------------------------------------Merge-Development 

的客戶審查測試環境此版本中,但不滿意F1。在此期間,F3代碼已完成,客戶希望查看。

Q - 如何使用git,我們的分段分支只有F2和F3進行審閱,但不是客戶現在拒絕的F1?

+0

+1我們正試圖解決同一個問題,即一個特定功能的潛力,使其成爲客戶端的暫存,然後停止,而同一包中的其他功能需要繼續存在。 –

回答

3

非常流行的工作流程是git-flow。這基本上是一個非常靈活的模型。這並不意味着你必須完全按照這裏描述的那樣去做,但是你可以從中獲得靈感。

在這種情況下,一個好的解決方案是創建一個特定於審查的臨時分支,您可以使用該分支向客戶展示。

該分支可以直接基於開發,或者基於與特定功能分級合併英寸

客戶端已審查通過後,您可以合併的接受特點,在分期分支,或者在特定的發佈分支,臨時評論分支可以被刪除。

這樣,您不必爲長期生活的分支重寫歷史記錄。

+0

我們正在研究使用git還原來移除合併,但如果我們有幾次合併,這可能會變得有點棘手。 Git流程非常好,我們將工作流程放在了基礎之上。 –

+0

我們提出的解決方案是,如果需要刪除一個或多個功能,就可以「廢棄」或將git重置開發和暫存分支返回到合併之前的狀態,例如我可以想象它會變得複雜,試圖執行多個還原 –

+1

而使用還原進行合併實際上並不會撤消合併。這意味着就git而言,分支仍然合併,並且重新合併分支並不容易。 – Ikke

4

你已經基本上兩個選擇:

  1. 恢復的F1合併在Development然後合併到這Staging
    F1將從DevelopmentStaging消失。

  2. Staging重置爲F1之前的提交,併合並F2F3手動。
    您將以Staging不是Development的子集結束。
    F1只會從Staging消失。

3

您可以使用git revert命令恢復合併提交。

您必須指定要恢復的合併提交以及要保留的父譜系。

Development $ git revert -m 1 <Merge-F1 SHA> 

警告。恢復合併提交聲明您永遠不會希望合併引入的樹更改。因此,稍後的合併只會引入不是先前還原合併的祖先的提交引入的樹更改。這可能是也可能不是你想要的。 (見git revert

對警告的評論。如果您想要重新引入F1,您必須重新設定F1提交,這樣,儘管如此,仍然可以合併它們。

+1

我在「註釋警告」點,一個功能已被合併和恢復,並準備再次合併。你能否給我更多關於如何適當變硬的細節? –