怎麼建立一個良好的Git提交資訊

三分惡發表於2020-08-22

   原文:https://dev.to/chrissiemhrk/git-commit-message-5e21

在這裡插入圖片描述

提交資訊是對提交之前新增和更改的檔案所做的更改的簡短描述。

良好的提交資訊不僅對你所參與的專案上其它的團隊成員很重要,對你自己而言也很重要,你需要跟蹤所有提交,並確切知道在提交期間發生的變動。

即使你開發的是個人專案,我也建議你開始養成編寫良好的提交資訊的習慣。

這是我慣用的格式(可以隨著你的個人習慣和公司來改變):

type: subject

body (可選)

footer (可選)

1. Type

  • feat :新功能
  • fix : bug修復
  • docs :文件變更
  • style :與樣式相關的所有變動
  • refactor :既不是bug修復也未新增功能的程式碼更改
  • test :與測試有關所有變動
  • chore :改變了構建任務,程式包管理器配置等

2. Subject

它應該包含對所做更改的簡短描述。長度不能超過50個字元,應以大寫字母開頭,命令式的語法。“Add”,而不是 “Added” 或 “Adds”。


3. Body

正文用於說明你進行了哪些更改以及進行更改的原因。並非所有提交都很複雜,需要一個正文,尤其是如果你僅是開發一個個人的專案,因此正文是可選的。


4. Footer

頁尾也是可選的,主要在你使用issue追蹤引用issue ID時使用。


這是Udacity學生git 提交資訊的例子Udacity Git Commit Message Style Guide

feat: 少於50個字元的更改概括。

如有必要,提供更詳細的說明文字,約72字元左右。在某些情況下,第一行被視為提交的主題,其餘文字作為正文。 將摘要與正文分開的空行至關重要(除非沒有正文);各種工具,例如 log,shortlog和rebase,如果同時執行兩者,可能會造成混亂。

解釋該提交解決的問題。注意說明為什麼做這個更改(程式碼作了註釋)。另一方面,是否會導致負面的作用或其他不直觀的後果?這也是需要說明的地方。

空白行之後是其它段落。

- 專案要點也可以加進來
- 通常在專案符號前使用連字元或星號,用一個空格隔開,中間有空白行,但是約定在這裡變化

如果你使用issue追蹤,可以在footer中寫上對issue的關聯,就像這樣:

Resolves: #123See
also: #456, #789

這是一個實際的例子:

docs: Fix typo in README.md


正文之外同樣有一些有意思的評論(歪果仁會玩啊):

簡短明瞭,感謝你的這篇文章!
我傾向於使用表情符號作為型別——一看就顯示了提交的型別,例如:

➕:heavy_plus_sign: 新增檔案或實現功能時
?: hammer: 修復bug或處理issue時
? :green_heart: 在改進程式碼或註釋時
⚡:zap: 在提高效能時
?:scroll: 更新文件或readme時
?:key: 在處理安全相關時
? :repeat: 更新依賴或資料時
✅:white_check_mark: 建立一個新的release時
?:shirt: 重構或刪除linter警告時
❌:x: 刪除程式碼或檔案時

...提交歷史看起來很棒:

在這裡插入圖片描述



我討厭別人這麼做。它在git日誌中看起來令人困惑。只需使用unicode表情符號,它們就可以在任何地方使用。

順便說一下,我最喜歡的表情符號用於提交資訊:?????? (我通常將它們放在提交資訊的末尾)



我目前使用git alias建立帶有表情符號的漂亮提交訊息,我的提交資訊結構如下:

[emoji] <type>(scope): <message>

例如:

? FIX(pages): security issue fix on pages table

這是我的.gitconfig

# Git Commit, Add all and Push — in one step.
cap = "!f() { git commit -m \"$@\"; }; f"
# NEW.
new = "!f() { git cap \"? NEW($1): $2\"; }; f"
# IMPROVE.
imp = "!f() { git cap \"? IMPROVE($1): $2\"; }; f"
# UPDATE.
up = "!f() { git cap \"✍? UPDATE($1): $2\"; }; f"
# FIX.
fix = "!f() { git cap \"? FIX($1): $2\"; }; f"
# RELEASE.
rlz = "!f() { git cap \"? RELEASE($1): $2\"; }; f"
# DOC.
doc = "!f() { git cap \"? DOC($1): $2\"; }; f"
# TEST.
tst = "!f() { git cap \"? TEST($1): $2\"; }; f"
# BREAKING CHANGE.
brk = "!f() { git cap \"‼️ BREAKING CHANGES($1): $2\"; }; f"
# REMOVE
remove = "!f() { git cap \"? REMOVE($1): $2\"; }; f"
# REFACTOR
ref = "!f() { git cap \"♻️ REFACTOR($1): $2\"; }; f"
# INITIAL COMMIT
int = "!f() { git cap \"? INITIAL COMMIT($1): $2\"; }; f"


感謝你的提議!

這是Git表情符號的一個網站:https://gitmoji.carloscuesta.me/

在這裡插入圖片描述

? :tada:初次提交
? :rocket:[Add] 實現新功能時
? :hammer:[Fix]修復bug或處理issue時
? :art:[Refactor] 當重構/改善程式碼時
? :construction: [WIP]
? :pencil: [Minor] 一些小更新



大家可以使用隨機提交資訊生成網站。享受它吧!

https://paulospx.github.io/some_if_statements/commits.html

在這裡插入圖片描述

相關文章