GIT 規(guī)范
合并規(guī)范
為適應(yīng)多個feature同時并行交錯開發(fā)单起,做到每個 feature 獨(dú)立干凈东囚、合并的代碼不被意外覆蓋浴麻,這里有幾個良好的代碼合并習(xí)慣(規(guī)范)供大家參考够吩,
- 為了讓代碼變化更好追蹤栅盲,總是使用
merge
操作 而非rebase
; - 總是在自己的 開發(fā)(feature)分支 修改代碼废恋,無論開發(fā)階段還是解決bug階段谈秫;
- 每當(dāng)需要部署時,請切換到 部署分支鱼鼓,比如 test拟烫,merge 您的 開發(fā)(feature)分支 代碼到 test;請不要將您的環(huán)境變量配置一起合并過去迄本;
- 您不需要將 部署分支 同步(merge)到您的 開發(fā)(feature)分支硕淑,它會污染您的代碼。
這樣做的好處是:您的feature分支代碼總是獨(dú)立干凈的嘉赎,多人開發(fā)時置媳,可以靈活選擇哪幾個 feature 上線,擁抱產(chǎn)品需求變化
提交規(guī)范
commit message格式
type(scope): subject
type(必須) :
用于說明git commit的類別公条,只允許使用下面的標(biāo)識拇囊。
- feat:新功能(feature)。
- fix:修復(fù)bug靶橱,可以是QA發(fā)現(xiàn)的BUG寥袭,也可以是研發(fā)自己發(fā)現(xiàn)的BUG。
- chore:構(gòu)建過程或輔助工具的維護(hù)关霸。
- refactor:重構(gòu)(即不是新增功能传黄,也不是修改bug的代碼變動)。
- docs:文檔(documentation)队寇。
- style:格式(不影響代碼運(yùn)行的變動)膘掰。
- perf:優(yōu)化相關(guān),比如提升性能佳遣、體驗识埋。
- test:增加測試啤覆。
- revert:回滾到上一個版本。
- ci:持續(xù)集成相關(guān)惭聂。
scope(可選)
scope用于說明 commit 影響的范圍窗声,比如權(quán)限、訂單辜纲、商品等等笨觅,視項目不同而不同。
feat(order)
subject(必須)
subject是commit目的的簡短描述耕腾,不超過50個字符见剩。
fix(product): 修復(fù)產(chǎn)品無法刪除 Refs #133
部署上線
保持 master 分支是線上穩(wěn)定版本, 該分支是受保護(hù)的
統(tǒng)一使用 tag 的形式扫俺,發(fā)布上線:
git tag -a v1.0.0 -m "v1.0.0:一些相關(guān)描述苍苞,解決了xxx,修復(fù)了xxx"
# push tag
git push origin v1.0.0
打 tag 形式對運(yùn)維操作友好狼纬,tag 能準(zhǔn)確的指向 commit id羹呵,回滾方便;這里我們以版本號格式標(biāo)記疗琉,版本號可以同步產(chǎn)品的版本冈欢,也可以開發(fā)自己維護(hù)。
常見使用3個整數(shù)來記錄版本號 major.minor.patch
盈简,比如 1.2.3
- major 主版本號:大改版凑耻,不兼容老版本,major+1
- minor 次版本號:普通迭代柠贤,不影響之前版本功能香浩,minor+1
- patch 補(bǔ)丁版本號:小修改,bug修復(fù)臼勉,patch+1
打完 tag 后邻吭,將tag名 告知運(yùn)維,運(yùn)維做線上發(fā)布坚俗;
發(fā)布完成后镜盯,線上驗證完成,運(yùn)維或項目Owner/Maintainer 做合并到 master 分支操作
??:視情況 tagName 用 newBranch / commitId 代替