開発
Git

git commit には必ず -v オプションをつけよう

created: 2024-02-15
362 views

小ネタですが、個人的にかなり大事だと思っている&意外とやってない人も多そう&とてもお手軽にできる話なので紹介します。

ズバリ、 git commit コマンドには必ず -v オプションをつけましょう。 必ずですよ。
もうこれだけ言えれば十分なのですが、一応順を追って説明しておきます。

普通に git add して git commit コマンドを実行すると、指定したエディタでコミットメッセージを記載するファイルが現れます。そのファイルはこんな感じの内容かと思います。

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch some_branch
# Your branch is up to date with 'origin/some_branch'.
#
# Changes to be committed:
#   modified:   some/file.rb
#

ここに、変更差分を表示することができるのが -v オプションです。こんな感じになります。

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch some_branch
# Your branch is up to date with 'origin/some_branch'.
#
# Changes to be committed:
#   modified:   some/file.rb
#
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
diff --git a/some/file.rb b/some/file.rb
index 012345678..abcdef123 100644
--- a/some/file.rb
+++ b/some/file.rb
@@ -28,7 +28,7 @@ class SomeClass
       def some_method
         objects.each do |obj|
           awesome_method
-          super_method
+          grate_method
         end
       end

これの何が嬉しいかって、コミットしようとしている内容を見直すことができるんです。学生の頃、「テストでは全部解き終わったら見直しましょうね」って教わりませんでしたか? それを開発でもやりましょう。カッコ悪いタイポとか、デバッグ用のコードが残ってたとか、機密情報を gitignore し忘れてたとかいうのをコミットせずに済みます。上記コードは、 grate じゃなくて great ですよね。こういうのに気づけるかもしれません。

それから、コミットメッセージを記載するときにエディタの補完が使えるのもかなり嬉しいです。同じファイル上に変更したメソッド名などが記載されているので、「super_method から great_method に変更」みたいなコミットメッセージを入力する際に補完が効きます。 GitHub Copilot + VSCode を使っている人は Copilot がコミットメッセージを提案してくれるのも嬉しいです(そんなに精度は良くない印象ですが)。コミットは日常的にする動作ですから、ちょっとでも効率化しておくと時短になりますね。

この記事を読んだみなさんは、今すぐ zshrc を開いて alias gcv='git commit -v' としておくとか、 git commit 用の関数に -v をつけて回るとかしましょう。
-v オプション、もっと広まれー!