これ何?
コミットメッセージの書き方について今一度調べて自分なりの結論をまとめておく。
まとめ
- そこまでこだわる必要なさそうだが、feat: やchore: といった接頭辞くらいはつけておいても良さそう
- chore: とかつけておくと、単にライブラリを入れただけのコミットなんだな、とか refactor: だったらリファクタなんだな、とかが分かりやすい。
- whyを書く場所には、コードコメント、コミットメッセージ、PR等があるが、後になるほど粒度が大きくなる。行単位、コミット単位、PR単位のそれぞれのwhyがあるのでそれぞれ適当な場所に書くのが良さそう
- とはいえ、PRでも行ごとにコメントできるため、PRにも行ごとのwhyが書かれることが多い。なので、コミットから該当PRをたどる方法は知っておいた方が良い。
- GitHubのPull Requestsの検索窓にてコミットハッシュを入力し検索すれば出てくる。
- チームの方針と合うならAIに書いてもらうのも良さそう
Q&A
- 接頭辞は何を使う?
- https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716 の通りで良さそう。多すぎてもしんどいので。
- feat, fix, docs, style, refactor, test, chore
- コミットコメントはテンプレ決めてかっちりやった方がいいんじゃないの?
- そもそもコミットコメントをうまく書くためにはコミット単位が大切なのでは?
- 本当にそう
- なので場合によってはWIP、WIPとかでコミット積んでいってあとでコミットをきれいにする、とかってパターンもあるよう
- 個人的にはrebaseでうまいことコミットを統合したり分割したりとかはしないので、ある程度スピード落ちない範囲でよしなにやっている
- 開発しながらどこでコミット切るか考えながらやるのが大事だよね
こんな意見もありますよ?
コードには How
— Takuto Wada (@t_wada) 2017年9月5日
テストコードには What
コミットログには Why
コードコメントには Why not
を書こうという話をした- 個人的にはwhyとwhy notは同じようなものなのでその種別で書く場所を分けるのは反対の立場。どちらもスコープ次第で書く場所を考えるべきな気がする。
- 日本語?英語?
- どちらでも良さそうに思える状況なら日本語使えば?派になってきている。
- 前は結構頑張って英語書いていた。世界を見たとき話者数も多いし、今チームに日本人しかいなくても海外の人が増えるかもとか思っていたので。とはいえ、結局チームはずっと日本人だったり、英語で苦しくなったら苦しい英語を書くか日本語で書くかとかになってしまうし、まぁ将来海外の人が入ってきても加入以前のメッセージは翻訳して読んでくれって気もするので、最近はかなり日本語寄り。個人プロジェクトで英語なんて使わなけりゃ良かったと強く思っている。
- OSSとかで必要になればそれはそのとき頑張って書けば良いだけかなって。
リポジトリ調査
https://github.com/flutter/flutter/commits/master/
https://github.com/rrousselGit/riverpod/commits/master/
https://github.com/facebook/react/commits/main/
https://github.com/labstack/echo/commits/master/
- flutter, riverpod, react, echoはどれもコミットメッセージのフォーマットは決まっていなさそう。皆各々、思い思いのコミットメッセージを書いている。
https://github.com/golang/go/commits/master/
- goは影響のあるパッケージを最初に書いている
- https://go.dev/doc/contribute#commit_messages
The first line of the change description is conventionally a short one-line summary of the change, prefixed by the primary affected package.
- https://go.dev/doc/contribute#commit_messages
AI
例えばこれを使うと良い感じにそれっぽいメッセージが生成できそう。チームの方針(フォーマットや言語など)が合っている場合は使えば良さそう。
参考
- 巷で人気の記事。絵文字つけるとカラフルで良さそう。
- 少し細かめで、!つけたらBREAKING CHANGEだよ、とかのルールもある
- 接頭辞つけようね、くらいの話