您好, 訪客   登錄/注冊

基于git工具的多分支并行開發上線流程

來源:用戶上傳      作者:

  摘要    在軟件開發過程中,經常使用并行開發的方式,即將同一個項目分配給不同的人來完成,每個人負責其中的一個模塊,等所有人都完成后,再進行整合。最后整合面臨的問題是需要選出一個人來進行專門整合,此時的工作量會非常的龐大。本文介紹了git,svn等scm軟件的區別,并結合實際場景,介紹了使用git工具,在一個簡單的gitflow下,并行開發的場景。希望能夠幫助其它開發人員使用git工具來進行類似的工作。
   【關鍵詞】軟件開發 git
   1 git及其它工具介紹
   git是版本管理工具的一種,它是分布式的,每一個git repo都是包含了完整的信息和數據,開發者完全可以在本地進行開發,無需網絡連接。git工具的最大特點是多分支,可以支持多分支開發,這為多分支并行開發提供了基礎。
   相比git,SVN是集中式版本控制系統,所有代碼集中存放在中央服務器中,SVN最大的缺點是必須聯網才能工作,而且會受網絡速度的限制。另外集中式版本控制系統依賴于中央服務器,假如服務器宕機了,任何人都無法提交代碼。并且SVN的分支相對git要弱得多。
   其它類似的SCM比如,Mercurial和Bazaar還有微軟的VCS,但是使用最多最廣,功能最為強大的還是git。
   git的分支:
   master:主分支,當前分支上的代碼隨時可以直接發布,并且只能通過Pull Request從其他分支進行合并,而不能直接push修改。當開發告一段落,產生了新的可供發布的代碼時,master分支通過Pull Request更新了代碼。
   develop:開發分支,保存當前最新開發成果的分支,即當一個新功能開發完畢需要先合并到develop分支,這個分支的代碼會進行每日的代碼持續集成。所有的開發任務都是從這個分支Checkout新的特性分支進行開發。
   feature:特性分支,當開發新的功能時,從develop分支Checkout新的feature分支,這個分支的代碼最終要合并回develop分支或者廢棄掉。feature分支通常以功能為單位。
   2 git,gitlab和gitflow
   git的功能是非常強大的,但是使用它有一定的難度,尤其是要分清git,gitlab,gitflow的區別。
   git如前所述,就是一個基礎工具,如果在linux如紅帽或者是centos下,yum install git就能安裝這個工具,但是這個工具只具有基礎的功能,是基于命令行的,用戶管理等待其它功能基本沒有,只使用這個linux下的git來進行開發管理還是有以難度的。
   所以有了gitlab,這個是基于git的web管理工具,使用它有友好的界面和完備的管理各種管理功能,甚至還集成了CI/CD功能,使用gitlab來管理開發工作會非常方便,最難得是它支持在內網部署,這就為廣大開發者提供了一個強大的工具。類似的軟件還有gogs。
   而gitflow不同于前兩者,它是開發的流程和約定。
   3 基于git工具建立并行開發上線流程
   3.1 靈活的gitflow
   我們的項目包含大約2000個獨立的小文件,對于這個項目的管理,我們使用如下的gitflow:
   (1)設置開發,測試和維護角色,并行工作,互不干涉。倉庫設置develop和master分支,并禁止直接推送。
   (2)每一個開發人員使用一個開發分支,分支名字不能重復,開發完畢后上傳遠程倉庫。
   (3)測試人員測試腳本通過后,將開發分支合并到develop并刪除此分支。
   (4)維護人員定期合并develop和master分支,并將項目同步到服務器。
   上述的gitflow提供了并行開發的管理流程,并且能最大可能的避免沖突的產生,這樣的并行開發上線效率將大大的優于串行開發的效率。
   3.2開發過程
   將項目托管到gogs服務器上,將它作為遠程倉庫,并建立兩個分支:master分支(穩定生產版),develop分支(測試完成版),然后開發人員根據不同的任務,建立本地分支,在該分支上進行開發,工作完成后將代碼push到develop分支上,假如有沖突,則要先解決沖突,而后再次將代碼push到develop分支上。具體流程如下:
   (1)首先在電腦上安裝TortoiseGit:可以從Git官網直接下載安裝程序,然后按默認選項安裝即可。
   (2)將代碼下載到本地,如果本地已經有代碼則直接進入下一步:
   Git clone http://133.96.72.138:30000/tianjiangtao/2017GS.git
   (3)在本地進行常規開發,可使用vscode進行開發,增加、修改、刪除文件等等操作。
   更改目錄:cd 2017GS;
   切換分支到develop(開發分支):git checkout develop;
   查看分支:git branch-a;
   創建自己的dev分支(dev名稱可以任意取):git branch dev;
   切換到dev分支:git checkout dev;添加修改:git add *;
   (4)在本地開發工作告一段落,需要把本地代碼推送(Push)到遠程分支上,提交變更及增加新的分支,服務端如果無分支,就在遠端創建:git push--set-upstream origin dev。
   提交后會與遠程庫進行一次同步,最終清理掉版本庫中的dev分支,但本地工作區中的dev分支并不會刪除:git remote prune origin。
   (5)如果其他人已經向dev分支推送了他的提交,而你也對同樣的文件作了修改,在推送的時候會提示推送失敗,因為他的最新提交和你試圖推送的提交有沖突。解決辦法很簡單:先用git pull把最新的提交從dev拖下來,然后,在本地合并解決沖突,再推送到遠程倉庫。
   4 結語
   綜上所述,基于git的并行開發上線流程,可以實現團隊內的有效合作,提高工作效率,避免資源浪費。版本庫本地化,支持離線提交,相對獨立不影響協同開發。每個開發者都擁有自己的版本控制庫,在自己的版本庫上可以任意的執行提交代碼、創建分支等行為。更少的“倉庫污染”。git對于每個工程只會產生一個 .git目錄,這個工程所有的版本控制信息都在這個目錄中。
轉載注明來源:http://www.hailuomaifang.com/1/view-14841888.htm

?
99久久国产综合精麻豆