2013年12月25日 星期三

Git (六) 分支

分支是甚麼?

分支就是在專案中開闢新的開發線,當切換分支時檔案也會同步為新分支的檔案
例如
在 hello2中
做了三個commit
vi MasterA
vi MasterB
vi MasterC
git add MasterA
git commit -m "MasterA"
git add MasterB
git commit -m "MasterB"
git add MasterC
git commit -m "MasterC"

然後 git checkout -b pp   創建一個分支名叫 pp 並將分支切換到  pp
並做一個commit
vi  branch
git add branch
git commit -m "branch"
這時候開發圖會長得如下圖所示


這章圖代表甚麼呢?

代表在同一個專案中目前有兩個分支分別是 pp 以及 hello2
兩個專案中所擁有的檔案並不會相同 hello2中擁有 masterA masterB masterC
而 pp中只有 branch這個檔案

簡單的說可以在同一個資料夾底下同時存有多個不同版本的檔案


為什麼要開分支不開另一個資料夾?

原因其實很簡單,使用分支的好處太多了,
舉個例子,假設我今天有兩個分支
ACompany 和 BCompany 這兩個分支所代表的意義分別是給A公司的客製化版本,另一個是給B公司的客製化版本,基本上程式架構都相同,只有某些功能有些差異,
假設今天在ACompany分支上完成了一個新的feature,
然後BCompany分支也要導入這個功能時,我們只需要使用cherry-pick就可以將功能導入,
我們可以很輕易的將功能導入。

如果是使用另一個資料夾就必須花時間apply patch或者重新將功能導入(我想不會有人想這麼做)
而且很難做兩個版本之間的控管


何時要使用分支?

  • 當出現多種版本要維護時,例如出了1.0版本 2.0版本但是兩個版本都還有人使用這時候就可以開分支,當出現bug時可以同時做兩個版本的修復
  • 開發版本,測試版本,正式版本,這種作法是為了幫助自動化測試,在正式版本或測試版本通常會有dayly build 和 unit test 在run 只要有新的commit 就會做測試, 開發人員將開發好的版本merge 進測試版本 經過測試之後再進到正式版本。
  • 開發新功能時(這是本人較習慣的做法),在開發新功能時先開立一個新的分支在功能完成後再將該分支merge回去。這樣可以避免主支幹擁有尚未完成的功能,而其他人還是可以繼續做commit 的動作
養成好的分支觀念,可以讓開發以及維護更順利,遇到以上的情形,just Branch It  XD



沒有留言:

張貼留言