本文囊括2076字git
Git 做爲一個強大的分佈式版本控制系統,對比 SVN、CVS 等版本控制系統,其架構和設計在研發管理和協做上有着極大的優點。在我的開發的代碼管理和團隊協做過程當中,合理使用分支能在極大程度上提高管理效率。這篇文章根據張3、李4、趙六開發成長曆程改編,解讀了在企業開發過程當中進行協做開發的分支模型。程序員
從不用版本管理 到 使用 Git
分支管理的故事,也就是從這個時候開始的。。。服務器
某公司只有一個程序員,一開始並無版本管理的概念。項目開發只有一我的在參與,因此也沒用版本管理工具。網絡
後來,老闆又招了兩個程序員,老闆說:「研發管理要規範!」,通過一番調研,選用了 Git,三我的開始使用 Git 進行開發上的協做。架構
一開始,三我的都是經過一個倉庫,在 master 分支上進行協做。天天上班第一件事就是先把最新的代碼從服務器上拉到本地的 master 分支,下班前再把代碼給推到服務器上的 master 分支,項目就這樣展開了協做。分佈式
3人經過本地倉庫 master 分支向遠程倉庫 master 分支提交代碼工具
解決頻繁的代碼提交衝突 post
協做了幾天,團隊發現提交代碼 master 時候,常常產生代碼衝突,要麼張三和李四的代碼衝突,要麼李四跟趙六的代碼衝突。這時總要有人把代碼拉下來解決衝突。才能保證後續開發工做順利進行。同時,因爲缺乏代碼審查。部分質量較差的代碼和無關內容也時不時被提交上去。spa
團隊在解決衝突和代碼重構的問題上花費了很多精力。。。設計
爲了解決單一分支頻繁更新容易發生衝突的問題,三人開始研究使用分支的方式進行協做。經過在本地 master 檢出新分支,修改後將新分支推送到遠程倉庫,再經過 拉取合併請求(Pull Request)在遠程倉庫上合併分支到 master 分支。最後再把代碼從遠程 master 拉取到本地 master 進行更新。在這個基礎上,團隊也開始展開相互的 代碼審查(Code Review)工做。
本地 master 分支檢出新分支開發推送到遠端倉庫後,經過 Pull Request 合併到 master,而後拉回本地 master。
初步解決代碼迭代版本問題
通過一番折騰,幾我的的協做總算能比較穩定地進行。在後續數週內,團隊開發工做順利展開,項目也得以落地,進入快速迭代階段。爲了解決迭代的版本問題,團隊使用分支對每次版本發佈檢出一個分支進行保留。
經過遠程倉庫 master 分支在版本發佈時,檢出一個以版本號命名的分支,做爲特定版本管理。
團隊增加帶來的困擾
兩個月後,公司迎來了業務的快速增加。技術團隊從原來三我的快速增加到十來我的。原來的成員開始帶着新人作業務,隨着團隊的增加,原有的協做方式再次遇到各類各樣的問題。通過短短一週的磨合,三人無比疲憊地坐到一塊兒,對過去一週遇到的問題進行了覆盤:
通過討論三我的都意識到了問題所在,但無奈三人對於多人協做開發經驗很少,討論無果後,決定各自調研,再對比討論。兩天後,三我的帶着方案展開了探討。
✗ℨ
單個倉庫仍是多個倉庫?
在倉庫管理的方案上,張三主張使用單倉庫多分支的方式進行管理,李四則主張使用多倉庫多分支的方式進行管理。
通過討論,爲了下降反覆增長加倉庫協做者名單的協做成本,三人統一意見繼續保留使用單倉庫多分支的方式。
用「分支模型」規範分支管理
在分支策略上,張三提出了使用分支模式做爲分支管理規範化的解決方案,從分支類型、用途等角度規範開發的協做方式。
通過一番討論,三人達成了一致的意見,並針對上面的分支模型提出了些許細節的調整。
靈活使用 Git tag 和發行版管理功能
針對單個倉庫協做可能存在分支數量增加的問題,張三提出經過 Git tag 來取代 release/* 版本分支的做用。
使用 Git-flow 腳本規範本地分支和開發
除了在遠程倉庫上的管理方案,張三還建議提倡團隊成員經過 [git-flow] 一系列的腳本擴展,規範本地的分支管理和開發流程。現網絡上最流行的 git-flow 方案應該是 AVH 版 git-flow:https://nvie.com/posts/a-succ... 。經過安裝後,開發成員能夠在本地經過對項目的各種功能分支進行定義。
Git-flow 經過交互方式定義各種功能分支
經過一系列命令簡化各類分支模型的管理操做,小範圍功能能夠經過本地合併到本地分支,或直接推送到遠程再經過 Pull Request 合併操做。
通過一番調研和討論,三人最終決定了團隊在代碼協做上使用 單倉庫多分支 的方式,採用分支模型進行管理。
接下來的問題就比較簡單了,在碼雲 gitee.com 上新建倉庫,選擇相應的分支模型便可。Git 的分支相比 SVN 來講是很是輕量級的,善用分支有利於更清晰的進行開發過程的管理。
碼雲企業版 - 碼雲 Gitee.com
https://gitee.com/enterprises
企業級軟件協做開發的管理平臺 有序規劃和管理軟件研發全生命週期
往期精彩回顧