參考:#
前言:#
說在所有之前,如果你在參與團隊開發,那麼規範應該以團隊要求為主,這裡主要是日常自己的倉庫維護。
之前我大概學了一下基本的 commit message,比如 refactor, fix, feat, feature, perf 等等。
但是這些寫起來讓人感覺沒什麼動力,通常想不到寫什麼的時候我就直接 update, update 了。結果搞得倉庫就很難看,git log 也很糟糕。
Git Commit Message 雖然可以隨意描述,但使用沒有意義的描述對於後續 review 代碼以及理解代碼用途等方面都會造成巨大的影響。因此 Commit Message 具有意義是最基本的要求,此外,你還應該遵守一定的格式規範,這樣能夠讓大家更快更清晰地了解該 Commit 的詳情。這裡我主要介紹下常規的 Git Commit 規範和 Gitmoji 規範,最後介紹下我常用的相關配置。
不管你先前有沒有學過,都不妨試試用這個 commit message 規範來作為你倉庫規範,至少它寫起來要讓人覺得更加可愛些。
成品展示:https://github.com/yutto-dev/bilili
而我醜到爆炸的倉庫是這樣的:https://github.com/MrXnneHang/Blog
怎麼做:#
修改上一次 commit 的信息:#
git commit --amend
這會打開你上一次的 commit message,你可以修改它,我以前 commit 錯了總是reset --hard
然後重新 add,然後再次 commit,而且,當碰到文件修改的,還要備份一下文件,有點悲催哈,但我這麼做了半年。
像這樣:
:memo: docs:copilot無法在vscode中工作 (這是commit -m 的內容,:memo:是Gitmoji,push後會自動渲染)
# 請為您的變更輸入提交說明。以 '#' 開始的行將被忽略,而一個空的提交
# 說明將會終止提交。
# ...
你可以選擇在這裡修改你的 commit message,然後保存退出。當然你也可以直接在 commit -m 的時候一次性寫完。
另外 commit message 是分成 header, body, footer 三部分。具體寫法:
:memo: docs:copilot無法在vscode中工作 (這是commit -m 的內容,:memo:是Gitmoji,push後會自動渲染)
這裡是body的部分
這裡是footer的部分
# 請為您的變更輸入提交說明。以 '#' 開始的行將被忽略,而一個空的提交
# 說明將會終止提交。
# ...
三個部分一般以空行分開。最後在你 push 到 github 後,你可以點進 commit 去看你的 commit message 的詳細信息。
https://github.com/MrXnneHang/Blog/commit/17343e378c7e00dd971b5fd5209cb31faedb35f1
所以平時寫 header 應該儘量簡短,詳細信息可以放到 body 裡。
自定義短語:#
這個大大減少了我記憶和輸入 Gitmoji 的時間。
比如我可以用ref
來替代:recycle: refactor:
一般操作系統默認輸入法就支持自定義短語,你可以仔細找找。
不過上次 deepin 的搜狗輸入法就會亂碼,所以非必要,還是把短語加到默認輸入法裡,然後導出備份一份。
包括上面那個git commit --amend
我也放到自定義短語裡了。
Gitmoji 和 Git Message 對照表:#
可能會有所出入。
因為實際上使用了 Gitmoji 就可以不用使用 Git Message 了,但是防止別人看不懂,還是加上的好。
常用的就這些:
🎉 init: 初始化
🚀 release: 發布新版本
🎨 style: 代碼風格修改(不影響代碼運行的變動)
✨ feat: 添加新功能
🐛 fix: 修復 bug
📝 docs: 對文檔進行修改
♻️ refactor: 代碼重構(既不是新增功能,也不是修改 bug 的代碼變動)
⚡ perf: 提高性能的代碼修改
🧑💻 dx: 優化開發體驗
🔨 workflow: 工作流變動
🏷️ types: 類型聲明修改
🚧 wip: 工作正在進行中
✅ test: 測試用例添加及修改
🔨 build: 影響構建系統或外部依賴關係的更改
👷 ci: 更改 CI 配置文件和腳本
❓ chore: 其它不涉及源碼以及測試的修改
⬆️ deps: 依賴項修改
🔖 release: 發布新版本
你把這些全部發給 gpt,它就會把它的代碼給你,比如這個我肯定常用的:💩 💩 bad code:
💩
和:poop:
是等效的,只要你寫在 commit 裡後 push 到倉庫裡就會自動渲染。
比較完整的可以查看:https://nyakku.moe/posts/2018/09/16/git-commit-message-convention.html
你一條一條地把這些加到你的自定義短語裡,然後就可以愉快地寫 commit message 了。
希望你以後的倉庫都很可愛。