2012年5月16日 星期三

Git | 把管程式碼和團隊進度二合一

其實用Git有一段時間了,我非常喜歡那種有邏輯的開發流程,嗯...我喜歡邏輯XD
Git的大名現在大約已經算是無人不知無人不曉啦,這篇文章會把整個管理流程的使用邏輯簡述一下,作為筆記參考之用,而關於Git的指令操作應該隨便找都有,大概會在下一篇稍微簡介一下常用的幾種。




Issue Tracking System


是低,基於現在正是本人如火如茶的迷上Rails之際,理所當然會採用Git + Redmine來產生加乘效果,但本篇只專注紀錄Git部份。

請看以下這張經典之作

圖片來源 -  ihower


這張圖中有時間軸,還有五條支線,直接看圖乾那會有點亂無章法的,
讓我們繼續看下去(盛竹如語氣)


主線為 master,以此作為主幹 branch,還可以開啟不同情況下的各種分支:


主要分支

  • master 主程式(除非重大 bug,則會分出 hotfix 分支)
  • develop 開發分支(用來在另外分支出 Release, feature)

次要分支

  • Hotfixes(由 master 直接分支,馬上修正 bug)
  • Feature(由 develop 直接分支,開發新功能)
  • Release(由 develop 直接分支,開發下一版 Release)

其實使用Git的最大魅力就是無限開branch,上面所有的branch都有其工作意義,
詳述如下──

MASTER

一直存在的分支
紀錄每個上線的版本
只有在推出新版的時候才會有變動
所謂的穩定版(stable version)

DEVELOP

一直存在的分支
必須總是 build 得過
New feature 和 enhancement 都在這裡
所謂的測試版

FEATURE

從 develop 分支出來
要 merge 回 develop
新增或修改功能的時候才會出現
功能完成就砍掉

RELEASE

從 develop 分支出來
要 merge 回 master,並且上 tag
要 merge 回 develop
管理者決定要 release 新版的時候才會出現
release 之後就砍掉
修改版本號,release note, ReadMe
最後測試並發現 bug

HOTFIX

從 master 分支出來
要 merge 回 master,並且上 tag
要 merge 回 develop 或 release
緊急修正問題專用
修正問題後砍掉
修改版本號, release note, ReadMe

簡單的說心法就是 ──
  1. 不同 branch 有不同用途,不得混用
  2. 任何更動都要開 branch(反正開 branch 不用錢)
  3. 除了 master 和 develop,其他 branch 完成其任務就砍掉

branch講完了,那commit咧?

簡單的說,就像是打電動的時陣,打到好寶會想要紀錄,要打魔王之前會想要紀錄,你可以把commit想像成無敵的無限紀錄欄位,重要時候就給他commit一下,等到發現打不過魔王的時候還可以隨時回頭重練...XD


看起來都是好處,Git好優秀

是的,他真的很猛,唯一的壞處就是,
要學會善用之前要一些努力...



May 15th, 2012
shesee@Taipei

沒有留言:

張貼留言