2015-05-27 124 views
0

下面是我們的方案:Git合併分支恢復工作流程

開發人員將Master分叉到新分支並開發一些代碼。大師進步。當它通過QA並被合併到Master中時,將執行完整的迴歸測試。有時候,一個分支(幾個被合併/測試的版本)未能迴歸。所以我們想要恢復合併並繼續發佈其餘的代碼。通常情況下,只需要在原始開發中調整一些東西,再次進行QA,然後重新融入主人,但是因爲主人最初恢復了原來的變化,所以大部分分支變化都被消除了。如何在修改完成後將此dev分支重新合併到master中而不會丟失由於還原而導致的更改?

+2

爲什麼你有一個策略首先將一個特性合併到'master'中,當有機會你將不得不恢復和重新合併?解決您的問題的簡單方法是停止執行此操作。 –

+0

我同意@TimBiegeleisen在這裏 - 而不是合併到master和迴歸測試中,合併到發佈分支或「開發」或類似的東西,迴歸測試所有東西,在需要的地方進行修復,然後在知道它時最終將*穩定的 –

+0

@scrowler這是我向團隊提出的建議,但希望聽到有沒有更好的方法或技術解決方案。如果您想發佈答案,我很樂意接受它。 – BKK

回答

0

git不會合並之前已經合併的任何提交。由於提交仍然在master的歷史中(但被後來的提交恢復),git不會再應用它們。該解決方案可以是:

  1. Revert the revert:只需git revert提交該恢復的變化。

或(更好的解決方案):

  • 合併主插入特性分支定期地或當它已準備就緒。
    • 如果所有的測試都通過:很好,將它合併到主(它應該是一個快進)
    • 否則做你需要做的事來解決問題。
  • 1

    在它面對這聽起來像您使用的是您的工作流程恢復不正確。

    爲了避免這種情況,如果主人超越了分支,你應該將主人合併到分支中而不是其他方式。

    所以:

    • 發展分支。
    • 當開發完成測試和迴歸測試通過:
      • 合併掌握到分支(不轉移到主)
      • 運行迴歸測試分支
      • 解決任何故障分支
      • 當測試通過:
        • 如果從合併到主人後主人已經改變,沖洗並重復(重新合併主人到分支,重新測試,重新解決)。
        • 否則,合併分支回主(快進)。

    這個工作流程避免了任何需要在任何時候恢復的推廣工作流的一部分(開發人員可能仍然需要時間來恢復時間在他們的開發分支)。

    您應該永遠不需要將主合併從一個分支恢復到分支,因爲對於已經接受到主分支的更改,它們必須在首先到達主分支之前通過了測試。因此,在合併到您的分支後產生的任何失敗都需要在該分支中解決,然後才能被接受回主。