提交資訊是對提交之前新增和更改的檔案所做的更改的簡短描述。
良好的提交資訊不僅對你所參與的專案上其它的團隊成員很重要,對你自己而言也很重要,你需要跟蹤所有提交,並確切知道在提交期間發生的變動。
即使你開發的是個人專案,我也建議你開始養成編寫良好的提交資訊的習慣。
這是我慣用的格式(可以隨著你的個人習慣和公司來改變):
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] 一些小更新
大家可以使用隨機提交資訊生成網站。享受它吧!