實(shí)際工作中 Git Commit 代碼提交規(guī)范是什么樣的?
前言
Git 是我們?nèi)粘9ぷ髦惺褂米顬閺V泛的分布式版本代碼控制系統(tǒng),因此在我們的實(shí)際工作中,git commit
代碼提交規(guī)范能夠讓每一次代碼提交都變得有據(jù)可循,方便后續(xù)的代碼審查、問題追蹤和版本管理。同時(shí),規(guī)范的提交信息也能夠?yàn)樽詣?dòng)化工具提供便利,如生成變更日志、自動(dòng)化部署等。
git commit 規(guī)范寫法示例
首先我們一起來看看行業(yè)統(tǒng)一認(rèn)可且標(biāo)準(zhǔn)的 angular 項(xiàng)目的 git commit
規(guī)范寫法。
基本格式
首先一個(gè)規(guī)范的 git commit message
通常包含 Header、Body 和 Footer 三部分,各部分之間使用空行分隔。
<header>
// 空一行
<body>
// 空一行
<footer>
Header 必填
描述提交類型和簡短說明。格式為:<類型>(<作用域>): <主題>
(<type>(<scope>): <subject>
)。
- 類型(Type): 必填,指明本次提交的目的,如 feat 表示新開發(fā)的功能(feature)、fix 表示修復(fù) bug、refactor 表示代碼重構(gòu)等。
- 作用域(Scope): 可選,描述修改的影響范圍,如模塊名、功能名等,視項(xiàng)目不同而不同。
- 主題(Subject): 必填,是 commit 簡明扼要的提交描述。長度建議不超過 50 個(gè)字符。
feat(payment): 微信支付功能集成
Body 可選
詳細(xì)說明本次 commit 修改的內(nèi)容。使用空行分隔段落,保持可讀性。
- 新增微信支付SDK依賴
- 實(shí)現(xiàn)支付結(jié)果回調(diào)處理
- 添加支付相關(guān)的單元測試
Footer 可選
主要用于關(guān)聯(lián) Issue、描述破壞性變更(BREAKING CHANGE)等。
Closes #889
BREAKING CHANGE: 舊版支付回調(diào)接口已廢棄,需遷移至 /api/v2/callback
實(shí)際工作常用的 git commit 規(guī)范寫法
其實(shí)在實(shí)際開發(fā)工作中很多時(shí)候我們主要關(guān)注和使用的是 git commit message
的 Header 部分。Header 通常包含了提交的類型、作用域和簡短的主題描述,這些信息對于快速了解每次提交的內(nèi)容和目的已經(jīng)足夠。
描述提交類型和簡短說明。格式為:<類型>(<作用域>): <主題>
。
格式:type(scope) : subject
常用的提交類型包括
提交類型 | 描述 | 示例 |
feat | 新功能增加(feature) | feat: add user login feature |
fix | 修復(fù)BUG | fix: correct user authentication |
refactor | 代碼重構(gòu)(既不是新增功能,也不是修復(fù) Bug) | refactor: simplify user validation logic |
docs | 文檔/注釋 | docs: update API documentation |
style | 代碼風(fēng)格相關(guān)無影響運(yùn)行結(jié)果的 | style: format code with prettier |
test | 測試相關(guān) | test: add unit tests for login feature |
build | 影響構(gòu)建系統(tǒng)或外部依賴的更改(例如:gulp,broccoli,npm) | build: update webpack config |
revert | 代碼撤銷修改 | revert: revert commit 12345abc |
ci | 持續(xù)集成的配置文件和腳本的變動(dòng)(例如:Travis,Circle,BrowserStack,SauceLabs) | ci: update Travis configuration |
chore | 依賴更新/腳手架配置修改等 | chore: upgrade React to the latest version |
perf | 性能優(yōu)化 | perf(core): optimize virtual DOM diffing algorithm |