代碼沖突、分支混亂怎么辦? 帶你了解京東、阿里大廠是如何進行代碼分支管理的
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
一、背景問題Git作為一款優(yōu)秀的分布式代碼管理工具,在開發(fā)過程中為團隊提供了極大的便利。然而,正如俗話所說,“無規(guī)矩不成方圓”。如果沒有合理的分支管理規(guī)范,可能會引發(fā)一系列問題,比如: 1、代碼沖突:開發(fā)者直接從
二、方案 以上的種種問題的根源在于 Git 分支管理的缺失規(guī)范。通過合理的管理規(guī)范,可以有效減少生產(chǎn)事故并提高研發(fā)效率。 2.1、人員角色首先,根據(jù)研發(fā)人員的職責(zé),我們可以將角色劃分為:1、項目組長 - Team Leader 2、需求開發(fā)研發(fā) - Developer 3、系統(tǒng)集成測試人員 - SIT Tester 4、系統(tǒng)用戶故事測試人員 - UAT Tester 5、系統(tǒng)運維人員 - Operator 2.2、角色分工根據(jù)人員分工,劃分每個角色可操作的環(huán)境權(quán)限。具體劃分如下: 2.3、分支管理2.3.1、分支命名規(guī)范根據(jù)角色和權(quán)限管理,創(chuàng)建不同的分支。以下是各類分支的命名規(guī)范及示例: 1、master 分支
2、develop 分支
3、feature 分支
4、release分支
當(dāng)有一組feature開發(fā)完成,首先會合并到develop分支,進入提測時,會創(chuàng)建release分支。 如果測試過程中若存在bug需要修復(fù),則直接由開發(fā)者在release分支修復(fù)并提交。 當(dāng)測試完成之后,合并release分支到master和develop分支,此時master為最新代碼,用作上線。 5、hotfix 分支
2.3.2、分支流程管理git flow 流程圖參考以下
git flow流程圖參考 1、一個新的項目需求立項后,初始化項目分支,默認(rèn)創(chuàng)建 master 分支,然后從 master 分支 checkout -b Develop 分支。 2、每位開發(fā)人員認(rèn)領(lǐng)自己的功能需求,分別從 Develop 分支拉取自己個人分支進行功能編碼。敏捷開發(fā)強調(diào)功能小版本迭代,并行開發(fā)。 3、當(dāng)研發(fā)人員每個 feature 分支完成,開發(fā)自測之后,提交 merge request,team leader 經(jīng)過 code review 確定運行無缺陷后合并到 develop 分支。 4、此時 sit 測試人員需要從 develop 分支打包最新代碼,并部署 sit 測試環(huán)境,同步進行功能及接口測試,強調(diào)敏捷中的 “測試驅(qū)動原則”。 5、當(dāng)所有 feature 都已合并并且 sit tester 打包測試無誤后,從此時的 develop 分支拉取最新代碼同步到 release 分支,并打包代碼部署到 UAT 預(yù)生產(chǎn)環(huán)境進行 uat 測試,測試過程中的缺陷直接在 release 分支進行修復(fù),研發(fā)及測試人員對修復(fù)的代碼進行缺陷回歸。 6、release 分支代碼回歸測試,無誤后發(fā)布上線,同時合并到 master 分支。 此時,一個項目從最初的開發(fā)編碼到發(fā)版上線,整個研發(fā)流程確保清晰明了。保證整個研發(fā)流程規(guī)范,可以大大減少生產(chǎn)事故。當(dāng)然,不可避免的也會有生產(chǎn)問題,如果此時出現(xiàn)生產(chǎn)問題,需要直接從 master 分支同步代碼至 hotfix 分支,修復(fù)生產(chǎn)問題并復(fù)測回歸。這種流程下,比較容易出現(xiàn)沖突的場景及解決方案如下: 1)、多 feature 分支并行開發(fā),在提交測試合并至 develop 分支時,容易出現(xiàn)合并沖突。這就要求各研發(fā)人員盡量只修改個人功能代碼文件。公共配置或公共依賴包應(yīng)由單獨開發(fā)人員維護,按需添加,修改合并后推送到各 feature 分支。 2)、Hotfix 分支修復(fù)的同時有 release 分支功能需要發(fā)版上線,合并 master 時容易出現(xiàn)合并沖突。這時按功能生產(chǎn)環(huán)境緊急性依次發(fā)布上線,發(fā)版上線后立即合并 master 并推送到另一分支 (hotfix/release)。 2.3.3、提交日志規(guī)范Commit Masseage 的格式規(guī)范 每次提交,Commit message 都包括三個部分:Header,Body 和 Footer。其中,Header 是必需的,Body 和 Footer 可以省略。 Header 部分只有一行,包括三個字段:type(必需)、scope(可選)和 subject(必需)。
Body 部分是對本次 commit 的詳細描述,可以分成多行。 Footer 部分只用于兩種情況。
三、操作方法3.1、常見任務(wù)命令行操作3.1.1、增加新功能
3.1.2、修復(fù)緊急bug
3.1.3、測試環(huán)境代碼
3.1.4、生產(chǎn)環(huán)境上線
3.1.5、 代碼合并代碼合并是個技術(shù)活,這里提2個點 第一點是合并注意事項:1)、由開發(fā)人員發(fā)起合并,對于沖突比較多的,可以2個人以上進行合并;2)、系統(tǒng)參與者 評審人員 review通過后,才正式合并到分支。 第二點是合并方式:可基于命令行也可基于Idea git插件代碼建立分支與合并分支。 以下基于Idea git插件方式進行代碼合并說明: 3.1.5.1、建立分支git默認(rèn)的主分支名字為master,一般團隊開發(fā)時,都不會在master主分支上修改代碼,而是建立新分支,測試完畢后,在將分支的代碼合并到master主分支上。 操作如下1、idea git分支的操作idea git的操作在右下角,如下圖: 說明:
2、創(chuàng)建分支點擊【new branch】,彈出窗口,如下圖: 輸入分支名稱點【OK】,然后默認(rèn)切換到該分支。 3、切換分支如果要切換回master主分支,操作如下圖: 點擊【checkout】 4、在新建立的分支上修改代碼切換到之前新創(chuàng)建的分支,修改代碼。 5、提交分支到本地庫一般情況下只需要將分支提交到本地倉庫,不需要將分支提交遠程倉庫。如果將所有的分支都提交到遠程倉庫,會讓遠程倉庫雜亂無章。 確保在新建分支下,操作如下圖: 彈出新窗口,如下圖: 選擇要提交的文件,寫上提交注釋,然后點擊【commit】
彈出警告窗口如下圖: 點擊【commit and push】,提交本地庫成功! 3.1.5.2、合并到master主分支1)、切換到master主分支2)、合并代碼到master主分支操作如下圖: 點擊merge
3)、推送到遠程倉庫操作如下圖: 點擊【push】 提交成功后右下角彈出信息:
四、小結(jié)1、分支管理的重要性:良好的管理規(guī)范能適當(dāng)減少生產(chǎn)事故,提高研發(fā)效率。2、對于分支如何管理:文中就分支流程管理和常見操作進行了說明,希望能夠幫到大家。 閱讀原文:原文鏈接 該文章在 2025/4/8 8:59:32 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |