Git的優(yōu)勢:
1.Git是一個分布式的版本控制系統(tǒng)喻喳,這一點可以對比svn分支管理系
svn多個開發(fā)人員共用操作同一個文件, 分支的操作都是影響“全世界”,但G更傾向于被使用于分布式模式困曙,也就是每個開發(fā)人員從中心版本庫/服務器上chect out代碼后會在自己的機器上克隆一個自己的版本庫表伦。我們可以在自己的代碼庫上進行提交,修改慷丽,分支蹦哼,合并等各種操作。同時git開發(fā)人員理論上可以再自己的代碼庫上無限分支的開發(fā)要糊。
2.Git把內(nèi)容按元數(shù)據(jù)方式存儲纲熏,而SVN是按文件
有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾里。如果你把.git目錄的體積大小跟.svn比較,你會發(fā)現(xiàn)它們差距很大局劲。因為,.git目錄是處于你的機器上的一個克隆版的版本庫勺拣,它擁有中心版本庫上所有的東西,例如標簽容握,分支宣脉,版本記錄等。
3.分支切換方便剔氏,優(yōu)秀的分支模型 可以支持我們進行項目的快速開發(fā)
在git分支模型中塑猖,我們很容易實現(xiàn)多個開發(fā)線并行實現(xiàn)快速開發(fā)。
Git的分支種類:
master:主分支
這個分支是我們的Production分支谈跛,是我們最新發(fā)布到生產(chǎn)環(huán)境的代碼所在的分支羊苟。 這個分支只能從其他分支合并,不能在這個分支直接修改感憾。
develop:開發(fā)分支
這個分支是我們是我們的主開發(fā)分支蜡励,包含所有要發(fā)布到下一個Release的代碼,這個主要合并與其他分支阻桅,比如Feature分支凉倚。
feature:功能分支
這個分支主要是用來開發(fā)一個新的功能,一旦開發(fā)完成嫂沉,我們合并回Develop分支進入下一個Release稽寒。
release:發(fā)布分支(測試分支)
這個分支是我們在develop開發(fā)完成,將要進行發(fā)布時從develop拉取的分支趟章,release分支完成后我們需要將release分支分別合并到master 和 develop中杏糙。
bugFix:bug修復分支
這個分支是我們線上代碼有bug時,從master拉取的分支蚓土,當bug修復時合并到develop分支上 以及master上
Git的分支命名規(guī)范:
master: master-系統(tǒng)名-項目版本 例如:master-iOS-xxxApp1.0develop:develop_創(chuàng)建時間 例如 develop_20160101* feature: feature_版本_時間 例如 feature_1.0_20160101 *
release發(fā)布分支:release_版本*時間 例如 release1.0_20160101 *
release測試分支:release_feature_時間 例如 release_feature_20160101* *
Git的工作流程:
1.初始的項目創(chuàng)建為master
2.在一個開發(fā)線對應一個develop分支
3.進行功能開發(fā)時宏侍,拉取不同的feature分支 進行開發(fā),當開發(fā)完成時 將feature分支合并到develop分支
4.所有的feature分支開發(fā)完成都合并到develop分支之后 確認開發(fā)完成 進入發(fā)布期
5.發(fā)布期從當前develop節(jié)點拉取release發(fā)布分支 進行發(fā)布測試
6.當測試完成之后 將release分支分別合并到develop分支和master分支 保持master和develop最新
Git使用注意事項:
1.master分支是server 倉庫上不可以更改只能由其他分支合并 (恒存在)
2.develop分支是local 倉庫上不可以更改只能由其他分支合并 (恒存在)
3.feature分支對應單個功能(單獨開發(fā)人員) 開發(fā)人員不允許使用其他人的feature 如果遇到有依賴關(guān)系的 需要通過develop分支進行通訊
4.當功能開發(fā)完成之后將feature合并到 develop中蜀漆,feature生命周期結(jié)束
5.當要單獨測試某一個功能谅河,那么將feature分支合并到develop中,由測試拉取release測試分支
6.當線上出現(xiàn)bug時确丢,從master拉取bugfix分支修復bug绷耍,修復完成 將bugfix合并到下一個開發(fā)周期的develop分支中以及合并到master上 bugfix聲明周期結(jié)束
Git使用Ps:
當然,這是Git Flow標準流程蠕嫁,我們也可以根據(jù)項目團隊進行適當?shù)男薷南翘欤热缥覀兛梢匀サ魊elease測試分支毯盈,直接在feature進行單個功能測試剃毒,也可以直接在develop上進行功能的集成測試。測試完成之后直接將develop合并到master分支上。