怎么寫一個好的 Git commit message

網(wǎng)絡(luò)上很多關(guān)于 commit message 的想法都來源于 tpope搅方,在他看來咱台,一個好的 Git commit messge 應(yīng)該是這樣的:

Capitalized, short (50 chars or less) summary

More detailed explanatory text, if necessary. Wrap it to about 72
characters or so. In some contexts, the first line is treated as the
subject of an email and the rest of the text as the body. The blank
line separating the summary from the body is critical (unless you omit
the body entirely); tools like rebase can get confused if you run the
two together.

如上:

  • 首先是一個不超過 50 個字符的摘要(summary),單獨(dú)占一行,首字母大寫,行尾不要加點(diǎn) .
  • 如果有必要進(jìn)行進(jìn)一步解釋卒暂,那么在摘要行下面空一行,添加描述信息娄帖。描述信息每行不超過 72 個字符也祠。

commit message 應(yīng)該使用祈使語氣,也就是 “Fix bug”块茁,而不是 “Fixed bug” 或者 “Fixes bug”齿坷。這是為了與 git mergegit revert 自動生成的 commit message 相一致桂肌。

關(guān)于這一行的摘要怎么寫,也可以有一些約定:

Leading active verb Explanation
Add Create a capability e.g. feature, test, dependency.
Cut Remove a capability e.g. feature, test, dependency.
Fix Fix an issue e.g. bug, typo, accident, misstatement.
Bump Increase the version of something e.g. dependency.
Make Change the build process, or tooling, or infra.
Start Begin doing something; e.g. create a feature flag.
Stop End doing something; e.g. remove a feature flag.
Refactor A code change that MUST be just a refactoring.
Reformat Refactor of formatting, e.g. omit whitespace.
Optimize Refactor of performance, e.g. speed up code.
Document Refactor of documentation, e.g. help files.
  • Bullet points are okay, too

  • Typically a hyphen or asterisk is used for the bullet, followed by a
    single space, with blank lines in between, but conventions vary here

  • Use a hanging indent

在詳細(xì)描述部分永淌,可以用 - 或者 * 分點(diǎn)闡釋夺欲,每點(diǎn)的文字部分與 -* 之間空一格咕缎,同時點(diǎn)與點(diǎn)之間以空行分隔,使用懸掛縮進(jìn)。

具體操作時激蹲,有兩種方式:

  1. 直接在 git commit 命令上添加參數(shù):
$ git commit -m "Title" -m "Description ......"
  1. 使用不帶參數(shù)的 git commit莉撇,在自動打開的編輯器中進(jìn)行操作觉义,默認(rèn)是 Vim测摔。

推薦使用第 2 種方式,比較清楚和直觀所坯。如果在 Vim 中編輯 commit message谆扎,可以在 .vimrc 中加入以下配置, 開啟拼寫檢查和設(shè)置文本寬度為 72 :

autocmd FileType gitcommit setlocal spell textwidth=72

可以考慮在 commit message 中加入相關(guān)的 PR, issue 鏈接,可以是一個編號芹助,比如 #209, GitHub 會自動關(guān)聯(lián)到對應(yīng) PR 和 issue 的 URL堂湖。在 GitHub 上進(jìn)行 merge 時,它也會自動幫我們加上相關(guān)的 PR 編號状土。

image.png

如果涉及本項(xiàng)目之外的 issue无蜂,可以直接寫永久鏈接,避免沖突蒙谓。

引用 issue 時斥季,如果出現(xiàn)一些關(guān)鍵詞,比如 “Close #209”, 那么 GitHub 就會關(guān)閉 issue #209累驮。詳細(xì)內(nèi)容以及一些其他關(guān)鍵詞可參見 Closing issues using keywords.

以上內(nèi)容不用完全照做酣倾,只須做到 “力所能及” 的一些點(diǎn)。另外慰照,每個項(xiàng)目灶挟,每個團(tuán)隊(duì)也都可能有自己的一些規(guī)范,盡量統(tǒng)一即可毒租。

參考:

[1] A Note About Git Commit Messages
[2] How to commit a change with both “message” and “description” from the command line?
[3] 5 Useful Tips For A Better Commit Message
[4] How to write a Git Commit Message (2014)
[5] git_commit_message

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市箱叁,隨后出現(xiàn)的幾起案子墅垮,更是在濱河造成了極大的恐慌,老刑警劉巖耕漱,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件算色,死亡現(xiàn)場離奇詭異,居然都是意外死亡螟够,警方通過查閱死者的電腦和手機(jī)灾梦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門峡钓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人若河,你說我怎么就攤上這事能岩。” “怎么了萧福?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵拉鹃,是天一觀的道長。 經(jīng)常有香客問我鲫忍,道長膏燕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任悟民,我火速辦了婚禮坝辫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘射亏。我一直安慰自己阀溶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布鸦泳。 她就那樣靜靜地躺著银锻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪做鹰。 梳的紋絲不亂的頭發(fā)上击纬,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機(jī)與錄音钾麸,去河邊找鬼更振。 笑死,一個胖子當(dāng)著我的面吹牛饭尝,可吹牛的內(nèi)容都是我干的肯腕。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼钥平,長吁一口氣:“原來是場噩夢啊……” “哼实撒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涉瘾,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤知态,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后立叛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體负敏,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年秘蛇,在試婚紗的時候發(fā)現(xiàn)自己被綠了其做。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顶考。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖妖泄,靈堂內(nèi)的尸體忽然破棺而出驹沿,到底是詐尸還是另有隱情,我是刑警寧澤浮庐,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布甚负,位于F島的核電站,受9級特大地震影響审残,放射性物質(zhì)發(fā)生泄漏梭域。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一搅轿、第九天 我趴在偏房一處隱蔽的房頂上張望病涨。 院中可真熱鬧,春花似錦璧坟、人聲如沸既穆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幻工。三九已至,卻和暖如春黎茎,著一層夾襖步出監(jiān)牢的瞬間囊颅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工傅瞻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踢代,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓嗅骄,卻偏偏與公主長得像胳挎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子溺森,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容