一、前言
如果有人問你,當下最流行的“版本管理系統(tǒng)”(Version Control System)是什么,那你一定要毫不猶豫的告訴他,非Git莫屬。
相比同類軟件,Git有很多優(yōu)點。其中很顯著的一點,就是版本的分支(branch)和合并(merge)十分方便。有些傳統(tǒng)的版本管理軟件,分支操作實際上會生成一份現(xiàn)有的代碼的物理拷貝,而Git只生成一個指向當前版本(又稱”快照“)的指針,因此非常快捷易用。
但是,太方便了也會產(chǎn)生副作用,如果你不注意,很可能留下一個到處都是分支,完全看不出主干發(fā)展的脈絡(luò)。而本篇文章正是為了避免開發(fā)分支混亂而生。
二、分支管理
1.歷史分支
相對使用僅有的一個master分支,Gitflow工作流使用2個分支來記錄項目的歷史。master儲存正式發(fā)布的歷史,develop分支作為功能的集成分支。這樣也方便master分支上的所有提交分配一個版本號。
2.功能分支
每個新功能位于一個自己的分支,這樣可以push到中央倉庫以備份和協(xié)作。但功能分支不是從master分支上拉出來的新分支,而是使用develop分支作為父分支。當新功能完成時,合并回develop分支。新功能的提交不直接與master交互。
3.發(fā)布分支
一旦develop分支上的功能到了發(fā)布日期,就從develop分支fork一個發(fā)布分支(一般叫release)。release分支用于預(yù)發(fā)布測試,所以從這個時間點開始后新的功能不再加到這個分支上,release分支只應(yīng)該做bug修復(fù)、文檔生成和其他面向發(fā)布的任務(wù)。一旦release測試完畢并準備發(fā)布后,將其合并到master分支并分配一個版本號打上Tag。另外,release上做的bug修改要合并回develop分支。
使用一個專門用于發(fā)布的分支,是一個團隊可以在完善發(fā)布版本的同時,另一個團隊繼續(xù)開發(fā)下一個版本功能。
4.維護分支
維護分支(一般叫hotfix)是唯一可以直接從master分支fork出來的分支,用于線上版本bug修復(fù)。修復(fù)完成后,應(yīng)馬上合并回master和develop分支,同時master分支用新版本號打上Tag。
結(jié)語
通過上面幾個圖文的解釋,大家是不是都明白了呢,其實Git分支并不復(fù)雜,無非是master(線上),develop(開發(fā)),release(預(yù)發(fā)布),hotfix(線上bug修復(fù))這四種常用的分支,只要理解他們的作用和應(yīng)用場景并實踐于工作中,相信一定會提高開發(fā)效率,降低管理成本。下一篇我將通過具體案例來講解分支在日常團隊開發(fā)中的具體應(yīng)用,同時介紹一些git常用命令行。我們下期再見~
引用
http://blog.jobbole.com/23398/ 阮一峰:Git分支管理策略
http://www.bootcss.com/p/git-guide/ git-簡易指南
http://nvie.com/posts/a-successful-git-branching-model/ A successful Git branching model
https://www.sourcetreeapp.com/ sourcetree 分支管理工具
http://semver.org/lang/zh-CN/ 語義化版本2.0.0