程序员必备 Git 分支开发规范指南
Git 是目前最流行的源代碼管理工具。為規(guī)范開發(fā),保持代碼提交記錄以及 git 分支結(jié)構(gòu)清晰,方便后續(xù)維護(hù),現(xiàn)規(guī)范 git 的相關(guān)操作。
分支管理
分支命名
master 分支
master 為主分支,也是用于部署生產(chǎn)環(huán)境的分支,確保master分支穩(wěn)定性
master 分支一般由develop以及hotfix分支合并,任何時(shí)間都不能直接修改代碼
develop 分支
develop 為開發(fā)分支,始終保持最新完成以及bug修復(fù)后的代碼
一般開發(fā)的新功能時(shí),feature分支都是基于develop分支下創(chuàng)建的
feature 分支
開發(fā)新功能時(shí),以develop為基礎(chǔ)創(chuàng)建feature分支
分支命名: feature/ 開頭的為特性分支, 命名規(guī)則:?
feature/user_module、 feature/cart_module
release分支
release 為預(yù)上線分支,發(fā)布提測(cè)階段,會(huì)release分支代碼為基準(zhǔn)提測(cè)
當(dāng)有一組feature開發(fā)完成,首先會(huì)合并到develop分支,進(jìn)入提測(cè)時(shí),會(huì)創(chuàng)建release分支。
如果測(cè)試過程中若存在bug需要修復(fù),則直接由開發(fā)者在release分支修復(fù)并提交。當(dāng)測(cè)試完成之后,合并release分支到master和develop分支,此時(shí)master為最新代碼,用作上線。
hotfix 分支
分支命名: hotfix/ 開頭的為修復(fù)分支,它的命名規(guī)則與 feature 分支類似
線上出現(xiàn)緊急問題時(shí),需要及時(shí)修復(fù),以master分支為基線,創(chuàng)建hotfix分支,修復(fù)完成后,需要合并到master分支和develop分支
常見任務(wù)
增加新功能
(dev)$:?git?checkout?-b?feature/xxx????????????#?從dev建立特性分支 (feature/xxx)$:?blabla?????????????????????????#?開發(fā) (feature/xxx)$:?git?add?xxx (feature/xxx)$:?git?commit?-m?'commit?comment' (dev)$:?git?merge?feature/xxx?--no-ff??????????#?把特性分支合并到dev修復(fù)緊急bug
(master)$:?git?checkout?-b?hotfix/xxx?????????#?從master建立hotfix分支 (hotfix/xxx)$:?blabla?????????????????????????#?開發(fā) (hotfix/xxx)$:?git?add?xxx (hotfix/xxx)$:?git?commit?-m?'commit?comment' (master)$:?git?merge?hotfix/xxx?--no-ff???#?把hotfix分支合并到master,并上線到生產(chǎn)環(huán)境 (dev)$:?git?merge?hotfix/xxx?--no-ff??????????#?把hotfix分支合并到dev,同步代碼測(cè)試環(huán)境代碼
(release)$:?git?merge?dev?--no-ff??#?把dev分支合并到release,然后在測(cè)試環(huán)境拉取并測(cè)試生產(chǎn)環(huán)境上線
(master)$:?git?merge?release?--no-ff???#?把release測(cè)試好的代碼合并到master,運(yùn)維人員操作 (master)$:?git?tag?-a?v0.1?-m?'部署包版本名'??#給版本命名,打Tag “推薦一個(gè)艿艿寫的 6000+ Star 的 SpringBoot + SpringCloud + Dubbo 教程的倉庫:https://github.com/YunaiV/SpringBoot-Labs
日志規(guī)范
在一個(gè)團(tuán)隊(duì)協(xié)作的項(xiàng)目中,開發(fā)人員需要經(jīng)常提交一些代碼去修復(fù)bug或者實(shí)現(xiàn)新的feature。而項(xiàng)目中的文件和實(shí)現(xiàn)什么功能、解決什么問題都會(huì)漸漸淡忘,最后需要浪費(fèi)時(shí)間去閱讀代碼。但是好的日志規(guī)范commit messages編寫有幫助到我們,它也反映了一個(gè)開發(fā)人員是否是良好的協(xié)作者。
編寫良好的Commit messages可以達(dá)到3個(gè)重要的目的:
加快review的流程
幫助我們編寫良好的版本發(fā)布日志
讓之后的維護(hù)者了解代碼里出現(xiàn)特定變化和feature被添加的原因
目前,社區(qū)有多種 Commit message 的寫法規(guī)范。來自Angular 規(guī)范是目前使用最廣的寫法,比較合理和系統(tǒng)化。如下圖:
“推薦一個(gè)艿艿寫的 3000+ Star 的 SpringCloud Alibaba 電商開源項(xiàng)目的倉庫:https://github.com/YunaiV/onemall
Commit messages的基本語法
當(dāng)前業(yè)界應(yīng)用的比較廣泛的是 Angular Git Commit Guidelines
“https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines
具體格式為:
:?type: 本次 commit 的類型,諸如 bugfix docs style 等 scope: 本次 commit 波及的范圍 subject: 簡明扼要的闡述下本次 commit 的主旨,在原文中特意強(qiáng)調(diào)了幾點(diǎn) 1. 使用祈使句,是不是很熟悉又陌生的一個(gè)詞,來傳送門在此 祈使句 2. 首字母不要大寫 3. 結(jié)尾無需添加標(biāo)點(diǎn) body: 同樣使用祈使句,在主體內(nèi)容中我們需要把本次 commit 詳細(xì)的描述一下,比如此次變更的動(dòng)機(jī),如需換行,則使用 | footer: 描述下與之關(guān)聯(lián)的 issue 或 break change,詳見案例 Type的類別說明:feat: 添加新特性 fix: 修復(fù)bug docs: 僅僅修改了文檔 style: 僅僅修改了空格、格式縮進(jìn)等等,不改變代碼邏輯 refactor: 代碼重構(gòu),沒有加新功能或者修復(fù)bug perf: 增加代碼進(jìn)行性能測(cè)試 test: 增加測(cè)試用例 chore: 改變構(gòu)建流程、或者增加依賴庫、工具等 Commit messages格式要求#?標(biāo)題:50個(gè)字符以內(nèi),描述主要變更內(nèi)容 # #?主體內(nèi)容:更詳細(xì)的說明文本,建議72個(gè)字符以內(nèi)。?需要描述的信息包括: # 為什么這個(gè)變更是必須的? #?*??它可能是用來修復(fù)一個(gè)bug,增加一個(gè)feature,提升性能、可靠性、穩(wěn)定性等等 #?*?他如何解決這個(gè)問題??具體描述解決問題的步驟 #?*?是否存在副作用、風(fēng)險(xiǎn)? # #?如果需要的化可以添加一個(gè)鏈接到issue地址或者其它文檔IT技術(shù)分享社區(qū)
個(gè)人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識(shí)硬件:斷路器、接觸器、繼電器基礎(chǔ)知識(shí)
總結(jié)
以上是生活随笔為你收集整理的程序员必备 Git 分支开发规范指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南邮 计算机网络,南邮计算机网络_期末复
- 下一篇: mac降级safari_如何在Mac上的