Git Commit Log提交規(guī)范

commit log規(guī)范的意義:

  • 便于程序員對提交歷史進(jìn)行追溯,了解發(fā)生了什么情況。
  • 一旦約束了commit message,意味著我們將慎重的進(jìn)行每一次提交,不能再一股腦的把各種各樣的改動都放在一個git commit里面,這樣一來整個代碼改動的歷史也將更加清晰。
  • 格式化的commit message才可以用于自動化輸出Change log。

commit message格式 :

<type>(<scope>): <subject>
<body>
<footer>

type(必須)

用于說明git commit的類別,只允許使用下面的標(biāo)識。

feat:新功能(feature)。

fix/to:修復(fù)bug,可以是QA發(fā)現(xiàn)的BUG,也可以是研發(fā)自己發(fā)現(xiàn)的BUG。

  • fix:產(chǎn)生diff并自動修復(fù)此問題。適合于一次提交直接修復(fù)問題
  • to:只產(chǎn)生diff不自動修復(fù)此問題。適合于多次提交。最終修復(fù)問題提交時使用fix

docs:文檔(documentation)。

style:格式(不影響代碼運(yùn)行的變動)。

refactor:重構(gòu)(即不是新增功能,也不是修改bug的代碼變動)。

perf:優(yōu)化相關(guān),比如提升性能、體驗(yàn)。

test:增加測試。

chore:構(gòu)建過程或輔助工具的變動。

revert:回滾到上一個版本。

merge:代碼合并。

sync:同步主線或分支的Bug。

scope(可選)

scope用于說明 commit 影響的范圍,比如數(shù)據(jù)層、控制層、視圖層等等,視項(xiàng)目不同而不同。

例如在Angular,可以是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。如果你的修改影響了不止一個scope,你可以使用*代替。

subject(必須)

subject是commit目的的簡短描述,不超過50個字符。

建議使用中文(感覺中國人用中文描述問題能更清楚一些)。

  • 結(jié)尾不加句號或其他標(biāo)點(diǎn)符號。
  • 根據(jù)以上規(guī)范git commit message將是如下的格式:
fix(DAO):用戶查詢?nèi)鄙賣sername屬性 
feat(Controller):用戶查詢接口開發(fā)

body(可選)

改動內(nèi)容多的話,可以換行繼續(xù)描述詳細(xì)改動

footer(可選)

有不兼容場景用Breaks結(jié)尾。

feat($browser): onUrlChange event (popstate/hashchange/polling)
Added new event to $browser:
- forward popstate event if available
- forward hashchange event if popstate not available
- do polling when neither popstate nor hashchange available
Breaks $browser.onHashChange, which was removed (use onUrlChange instead)

commit log hook

shell

在本地.git/hooks/文件夾, commit-msg.sample 改名為commit-msg。

image.png

然后sudo vim把以下shell copy到commit-msg。

#!/bin/sh

COMMIT_MSG=`cat $1 | egrep "^(feat|fix|docs|chore)\(\w+\)?:\s(\S|\w)+"`

if [ "$COMMIT_MSG" = "" ]; then
  echo "Commit Message 不規(guī)范,請檢查!\n"
  exit 1
fi

if [ ${#COMMIT_MSG} -lt 15 ]; then
  echo "Commit Message 太短了,請再詳細(xì)點(diǎn)!\n"
  exit 1
fi

commit

不規(guī)范提交:header填寫xx(util)試試

image.png

maven

也可以用maven plugin動態(tài)生成shell,這樣可以持久化check功能到git。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容