我與Git的那些破事--程式碼管理
1. Git是什麼?
作為一名程式猿,我相信大家都或多或少接觸過git--分散式版本控制軟體。
有人說,它是目前世界上最先進的分散式版本控制系統,我想說,是否最先進不知道,但確實好用,實用。
作為一款風靡全球的軟體,不得不提提它的歷史:
--由Linus Torvalds創作,並與2005首次釋出,最初僅是為更好的管理Linux核心開發而設計,不曾想太優秀,如今已被廣為使用。
2. 我們可用Git來幹什麼?
作為一款分散式版本控制軟體,聽上去高階大氣上檔次,但說白了,就是一款專案程式碼管理工具。
3. 如何正確使用Git?
既然Git如此好用,理所當然,目前全球各大公司大多采用該軟體作為專案程式碼的管理工具。
猶記得當初剛從學校進入企業,發現原來公司的程式碼是這樣管理的,看上去猴塞雷的樣子。當然,伴隨著操作小心翼翼,生怕一頓操作猛如虎,犯錯回家賣紅薯。。
作為一個接觸多年的老手,則肆無忌憚,斧削刀砍,好不快活。講真,那會羨慕的不要不要~~
其實,只要懂得正確操作流程,你也可以大刀闊斧,那麼下面的知識,你值得擁有!!
4. 專案管理
好了,閒話就此打住,還是得來點乾貨。
我相信大家一定聽過一句話:作為一款穩定的產品,我們一定要保證專案執行的四個九。咋聽之下,一臉狐疑。其實,意為保證專案執行99.99%(至於那遁去的1,你懂的),即高可用的又一說法。
為保證專案高可用,產品上線必須嚴格遵守一定的流程。
這裡提幾個概念,可能與你所在公司說法不太一樣,但我相信都是換湯不換藥,領略精髓即可,大可不必咬文嚼字。
Git 分支:
- master--該分支一般作為備份使用,通常為最穩定程式碼。
- dev--該分支作為開發分支,持續開發,持續整合。
- feature--該分支作為需求開發分支,生命週期由需求建立到完成。
- release--該分支作為版本釋出分支。
- hotfix--該分支作為bug修復分支,釋出版本存在重要缺陷時,拉出該分支,並由該分支釋出hotfix版本。
部署環境:
- DEV/Local環境--本地環境。一般而言,程式猿接到一個新的需求時,會在本地開發,完成後自己測試,這裡稱為本地環境(當然財大氣粗的公司可能會專門準備一套DEV環境用於測試)。
- QA環境--與產線環境配置一致(單例項)。需求本地測試通過後,部署到QA環境中,由QA進行測試。由於QA環境部署頻繁,如果多例項部署會造成資源和時間上的浪費。
- BTS環境--與產線環境完全一致(分散式)。在版本釋出前,部署到BTS環境,該環境和產線環境完全一致。一般會在版本釋出前3天部署到該環境,做UAT(使用者接受測試)。
- PROD環境--分散式系統。產線環境。
4.1 新需求:
開發流程:
- 當團隊接到新的需求時,一般會安排某個或某幾個程式猿來開發該功能。在瞭解完需求和設計後,開發會拉出對應的feature分支,所有該需求的程式碼都將在該分支上進行開發。
- 當開發完成,為驗證功能可行性,程式猿需要在本地進行對應測試,通過後將程式碼合入到dev分支。
- 利用Jenkins從dev分支中進行打包,然後部署到QA環境中,由團隊中專職QA進行功能測試。測試不通過,上述步驟重複。測試通過,該需求結束。
這裡,有些小夥伴則會問,為什麼本地測試通過了,而在QA環境中卻不通過呢?
通常,一個團隊都會同時接多個需求,大家的程式碼都會並行往dev中合入,這時就有可能影響到其他的需求,或者被其他需求影響,導致bug。
Git詳細流程:
4.2 釋出新版本
開發流程:
- 當釋出新版本時,以時間或需求結束點為節點,打對應tag(方便以後回溯)。從該tag拉出release分支,Jenkins從release分支打包。
- 將包部署到QA環境,由專職QA進行測試。
- 如果測試不通過,從release分支中拉出hotfix分支,在hotfix分支上進行bug修復,本地測試完畢,Jenkins從hotfix分支打包,部署到QA環境測試。
- 測試通過,下一步。
- 將包部署到BTS環境,由專職QA進行測試。測試不通過,判斷當前分支,若為release分支,則從該分支拉出hotfix分支,在hotfix修復bug後;若為hotfix分支,則直接修改bug,本地測試完畢,Jenkins打包hotfix分支,部署到QA測試。
- 將包部署到PROD環境,由專職QA進行測試,測試不通過, 判斷當前分支,若為release分支,則從該分支拉出hotfix分支,在hotfix修復bug後;若為hotfix分支,則直接修改bug,本地測試完畢,Jenkins打包hotfix分支,部署到QA測試。
Git詳細流程:
上述的內容,僅為個人多年開發經驗總結,或許與標準流程有一定的出入。
如有錯誤之處,忘各位大佬不吝斧正。
作者:吳家二少
部落格地址:https://www.cnblogs.com/cloudman-open/
本文歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線<