Git提交規范

目錄:

  1. 提交操作規范
  2. 提交說明規范
  3. Angular提交說明規范

提交操作規范

為了保持分支提交歷史的清晰、獨立,在提交更改時,我們應做到:

  • 每一個提交都應該是一個完整、獨立的變更單元;
  • 撰寫符合提交說明規范 的提交說明信息;
  • 對于修復錯別字、添加遺漏的更改等等之類的提交應與對應的提交合并,不應為其創建單獨的提交;

多個提交合并成一個的各種方法請看Git中合并多個提交的各種方法

提交說明規范

Git 每次提交代碼,都必須要寫 提交說明; Git 對 提交說明 的格式是沒有限制的,你想怎么寫就怎么寫,如下:

雜亂的提交說明

但是,類似這種沒有格式的提交說明有以下缺點:

  • 不能很快分辨出提交的代碼是增加了新功能、還是修復了bug、還只是更新了文檔等等;
  • 不能有效地過濾某一類提交,比如:只想查看修復bug類的提交;
  • 不能根據需要過濾并導出提交信息,作為變更日志:比如,應用的升級的新功能說明、問題修復說明等等;

為了 方便 查看、過濾 提交說明,我需要將提交說明格式化、規范化;目前,有多種 提交說明 的寫法規范。但我推薦 Angular提交說明規范,這是目前使用最廣的寫法,比較合理和系統化,并且有配套的工具。

關于 Angular提交說明規范 的詳細文章請見:

下面是我對 Angular提交說明規范 一個匯總描述;

Angular提交說明規范

Angular提交說明的格式如下:

  • [] 表示可選的;
  • <> 表示必須的;
<Type>[(Scope)]:<Subject>
<空一行>
[Body]
<空一行>
<Footer>
  • 只有 TypeSubject 是必須的,其它的都是可選的;

  • 提交說明包括三個部分:Header(第一行)、Body(可選) 和 Footer(可選),用空行分隔;其中 Body、Footer 都是可選的,可以省略;

  • 任何一行都不得超過72、100個字符;這是為了避免自動換行影響美觀

  • Header:只占第一行,包括三個字段:Type(必需)、Scope(可選)和 Subject(必需);

    • Type:必需;用于說明提交的類別,只允許使用下面7個標識:

      • feat:新功能(feature)
      • fix:修補bug
      • doc:文檔(documentation),(很多規范里使用的是復數 docs,但我更建議使用 doc)
      • style: 格式(不影響代碼運行的變動)
      • refactor:重構(即不是新增功能,也不是修改bug的代碼變動)
      • test:增加測試
      • chore:構建過程或輔助工具的變動

      如果type為feat和fix,則該 commit 將肯定出現在 Change log 之中。其他情況(doc、chore、style、refactor、test)由你決定,要不要放入 Change log,建議是不要。
      提示: 為了醒目,也可以為每個 Type 分別指定一個 Emoji 表情,將其放在 Type 前面 或 后面;

    • Scope:可選;用于說明提交的影響范圍,比如數據層、控制層、視圖層等等,視項目不同而不同。

    • Subject:提交目的 的簡短描述;要求如下:

      • 不超過50個字符。
      • 以動詞開頭,使用第一人稱現在時,比如 change,而不是 changed 或 changes
      • 第一個字母小寫
      • 結尾不加句號 .
  • Body:對本次提交的詳細描述,

    • 可以分成多行。
    • 使用第一人稱現在時,比如使用change而不是changed或changes。
    • 應該說明代碼變動的動機,以及與以前行為的對比。
  • Footer:Footer 部分只用于兩種情況。

    1. 不兼容變動:如果當前代碼與上一個版本不兼容,則 Footer 部分以 BREAKING CHANGE 開頭,后面是對變動的描述、以及變動理由和遷移方法。
    2. 關閉 Issue:如果當前 提交 針對某個 issue 的,那么可以在 Footer 部分用 Closes #234 關閉這個 issue ;也可以用 Closes #123, #245, #992 一次關閉多個 issue ;
  • 特殊情況: 如果當前 提交 用于撤銷以前的 提交,則:

    • Header 必須以 revert: 開頭,后面跟著被撤銷的提交的 Header。
    • Body 部分的格式是固定的,必須寫成This reverts commit <hash>.,其中的 hash 是被撤銷的 提交 的 SHA 標識符。
      如果當前提交 與 被撤銷的 提交,在同一個發布(release)里面,那么它們都不會出現在 Change log 里面。如果兩者在不同的發布,那么當前 commit,會出現在 Change log 的 Reverts 小標題下面。
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容

  • git的規范和相關科普知識 git commit 的規范要求(參考Angular團隊) message格式如下: ...
    達文西_Huong閱讀 768評論 0 0
  • 完整參考實際項目中實踐過后,感覺很實用,檢索起來很方便。 1. 提交規范的必要性 Git每次提交代碼,需要填寫co...
    PaulLuv閱讀 1,645評論 0 0
  • git 提交規范 前言 無規矩不成方圓,編程也一樣。 如果你有一個項目,從始至終都是自己寫,那么你想怎么寫都可以,...
    janlle閱讀 443評論 0 1
  • Git 提交規范 制定一個 git commit 信息的提交規范是開發團隊工作流必不可少的環節。試想一下,如果查看...
    十月里的男藝術家閱讀 809評論 0 0
  • 良好的Commit Message有利于代碼審查,能更快速查找變更記錄,并且可以直接生成Change log。 在...
    云翼飛閱讀 1,956評論 0 1