サンダーボルト

相手モンスターを全て破壊する。

コミットメッセージの書き方メモ

これ何?

コミットメッセージの書き方について今一度調べて自分なりの結論をまとめておく。

まとめ

  • そこまでこだわる必要なさそうだが、feat: やchore: といった接頭辞くらいはつけておいても良さそう
    • chore: とかつけておくと、単にライブラリを入れただけのコミットなんだな、とか refactor: だったらリファクタなんだな、とかが分かりやすい。
  • whyを書く場所には、コードコメント、コミットメッセージ、PR等があるが、後になるほど粒度が大きくなる。行単位、コミット単位、PR単位のそれぞれのwhyがあるのでそれぞれ適当な場所に書くのが良さそう
  • とはいえ、PRでも行ごとにコメントできるため、PRにも行ごとのwhyが書かれることが多い。なので、コミットから該当PRをたどる方法は知っておいた方が良い。
    • GitHubのPull Requestsの検索窓にてコミットハッシュを入力し検索すれば出てくる。
  • チームの方針と合うならAIに書いてもらうのも良さそう

Q&A

  • 接頭辞は何を使う?
  • コミットコメントはテンプレ決めてかっちりやった方がいいんじゃないの?
    • コスパの話もあるので、最低限接頭辞つけるくらいが良いのではと個人的には思っている。有名リポジトリでも接頭辞すら無いのも全然ある。
    • チーム全体が納得するならかっちりやっても良いかも。ただ将来加入する人のことも考えるとかっちりやりすぎると大変そう。
  • そもそもコミットコメントをうまく書くためにはコミット単位が大切なのでは?
    • 本当にそう
    • なので場合によってはWIP、WIPとかでコミット積んでいってあとでコミットをきれいにする、とかってパターンもあるよう
    • 個人的にはrebaseでうまいことコミットを統合したり分割したりとかはしないので、ある程度スピード落ちない範囲でよしなにやっている
    • 開発しながらどこでコミット切るか考えながらやるのが大事だよね
  • こんな意見もありますよ?

    • 個人的には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は影響のあるパッケージを最初に書いている

AI

dev.classmethod.jp

例えばこれを使うと良い感じにそれっぽいメッセージが生成できそう。チームの方針(フォーマットや言語など)が合っている場合は使えば良さそう。

参考

Gitのコミットメッセージの書き方(2023年ver.)

  • 巷で人気の記事。絵文字つけるとカラフルで良さそう。

Conventional Commits

  • 少し細かめで、!つけたらBREAKING CHANGEだよ、とかのルールもある

Semantic Commit Messages

  • 接頭辞つけようね、くらいの話