2015-06-25 41 views
0

我使用git流,當分支製作功能分支時,我有一個關於最佳實踐的問題。如果我有一個開發主分支和兩個功能分支,一個分支在t2時刻分支,另一個分支在t3分支,如果兩個功能分支尚未準備好合併,並且需要從開發分支或其他功能中提供新的東西科?有沒有辦法將特徵1的「基礎」從t2開發更新爲t3開發的新「基礎」?對於特性分支2,類似的,當它沒有準備好合並時,它可以在我們合併之前更新來自develop分支的新變化嗎?更新功能分支到新基地的最佳做法是什麼?

      feature 1 (branch) 
         /
        / 
    ----- develop ----/-----\--------------------------- 
          \ 
           \ 
           feature 2 (branch) 
    t1    t2  t3      t4 

能樹枝在某種程度上是「前移」,讓在開發分支新的變化得到附帶功能分支或者是必要的,我們首先合併?

回答

5

我想補充現有的兩個答案:不是在feature分支合併develop,你也可以改爲重訂更新的develop分支每個feature分支:

git checkout feature 
git rebase develop 

優點:

  1. 歷史變得稍微清晰一些,因爲您避免了合併提交,如合併分支發展爲功能,這可能會導致混淆wh您後來將feature合併爲develop
  2. 此外,您可以輕鬆更改feature分支中的提交(例如,如果您想修改提交消息中的拼寫錯誤),而不更改develop分支中已有的提交。如果您將develop合併爲feature,則不再可能,因爲分支將會發散並且您不能再合併featuredevelop

所以這種方法稍微有點工作(rebase而不是合併),但也帶來了一些(次要的)優勢。

+0

優勢1不僅僅是次要的。如果用git bisect來找出某個特性被破壞的地方,那麼接近直線的發展是非常有利的。 – ABMagil

2

雖然你可以用rebase將它們向前移動,但我會將開發合併到功能分支中。在功能分支上工作時,我會定期將開發合併到它中,以防止在我最終將功能分支重新合併到開發中時發生巨大的合併衝突。

1

您可以在feature中合併develop分支的點。

如果您只需要一些特定的提交,您可以使用git cherry-pick將這些提交的更改應用到您的分支。

相關問題