由於 git 要開分支很容易,但要怎麼運用分支來管理就是一門學問了。在網路上最常看到的是 Git Flow

git-branching-model

除了這個方式外,另外一種常用的方法是如 git help workflows 所描述的。為了容易理解,我用 Pencil 畫了這張示意圖:

workflow

雖然前後兩張圖用的 branch 的名稱及用途不大一樣,但有些基本道理是相同的:

  • 平常只從穩定的分支 merge 到不穩定的分支。這裡的穩定及不穩定是相對的,例如第二張圖中 maint 比 master 穩定,而 master 又比 next 穩定;在第一張圖中,release 比 develop 穩定,hotfix 又比 develop 穩定。我說的 merge 是 git 中 branch to branch 的 merge,例如 merge A to B 是讓 branch A 所有的改動都合併到 branch B 中。
  • 在適當的時候可以從不穩定分支合併改動到穩定分支,例如第一張圖中的 developer -> release -> master 的合併,又例如第二張圖中的 next -> master -> maint。
  • Bugfix 應該 check-in 到最舊且需要這個改動的分支,然後再根據上一條規則的作法傳佈到較新的分支上。這樣做可以確保不會有忘記 merge 的 bugfix。
  • 新 feature 都應該在獨立的分支中開發。

不管是用那一種方式,善用分支來管理產品的開發及產品發佈已經是個軟體開發人員必備的技能了,如果你還不熟悉,趕快找個機會把這些方法用到你目前正在做的工作上吧。