49
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初心者必見!Gitのコミットメッセージのテンプレートの作成方法について

Last updated at Posted at 2022-08-12

概要

Git自体に慣れていなかったり会社のコミットメッセージの書き方を完全に理解できていないうちはカンペとして使えるテンプレートをあらかじめ作成、設定しておくことをお勧めします
なので今回はGitのコミットメッセージのテンプレートの作成および設定方法について1から解説します

前提

  • Macを使用

コミットメッセージ

会社によって書き方は違うと思いますが一般的には
:emoji: #Issue番号 変更内容
のような書き方をされている会社が多いかと思います。
テンプレート作成時は会社の運用に合わせて作っていただければと思います。

テンプレートメッセージ

設定方法

  • テンプレートの作成

ルート直下にテンプレートファイルを作成します
今回は.commit_templateというファイル名で作成します

cd ~
touch .commit_template
  • 作成したファイルをGitのコミットメッセージのテンプレートに設定

以下を実行して先ほど作成した.commit_templateをテンプレートメッセージとして設定
グローバルにすることで全てのGitリポジトリのコミットメッセージのテンプレートとして使用できます

git config --global commit.template ~/.commit_template

テンプレート例

.commit_templateを開き、テンプレートメッセージを記載します
以下がテンプレートメッセージのサンプルです
会社で使用する絵文字やメッセージの構成に合わせて自由にアレンジしてみてください
テンプレートに記載されている以外の絵文字を使いたい場合は
Emoji Cheat Sheetを参照してください
テンプレートメッセージでは#の箇所はコメントアウトされるので実際にコミットメッセージとしてGitに反映されるのは
# ==== Commit Messages ====
# ==== Commit Messages(Template) ====
の間の空白行になります

.commit_template
# ==== Commit Messages ====

# ==== Commit Messages(Template) ====
# :emoji: #Issue番号 変更内容
# ) :+1: #438 コメント追加
#       👍 #438 コメント追加
# ==== Prefix ====
# :fix: バグ修正
# :hotfix: クリティカルなバグ修正
# :add: 新規機能・新規ファイル追加
# :feat: feature
# :update: バグではない機能修正
# :change: 仕様変更による機能修正
# :docs: ドキュメントのみ修正
# :disable: 無効化
# :remove(delete): ファイル削除、コードの一部を取り除く
# :rename: ファイル名の変更
# :upgrade: バージョンアップ
# :revert: 修正取り消し
# :style: 空白、セミコロン、行、コーディングフォーマットなどの修正
# :refactor(clean,improve): リファクタリング
# :test: テスト追加や間違っていたテストの修正
# :chore: ビルドツールやライブラリで自動生成されたものをコミットするとき

# ==== Emojis ====
# 🐛  :bug: バグ修正
# 👍  :+1: 機能改善
# ✨  :sparkles: 部分的な機能追加
# 🎨  :art: デザイン変更のみ
# 💢  :anger: コンフリクト
# 🚧  :construction: WIP
# 📝  :memo: 文言修正
# ♻️  :recycle: リファクタリング
# 🔥  :fire: 不要な機能・使われなくなった機能の削除
# 💚  :green_heart: テストやCIの修正・改善
# 👕  :shirt: Lintエラーの修正やコードスタイルの修正
# 🚀  :rocket: パフォーマンス改善
# 🆙  :up: 依存パッケージなどのアップデート
# 👮  :cop: セキュリティ関連の改善
# ⚙   :gear: config変更
# 📚  :books: ドキュメント

実際にコミットしてみよう

まずは適当なコードに対して

git add

をした後に

git commit

をします
(後ろにコミットメッセージは書きません)
するとvimが起動し、作成したテンプレートメッセージが開きます
今回のテンプレートは自分でアレンジしたものです
iを押してinsertモートにした後に空白行にコミットメッセージを書きます

vim
# ==== Commit Messages ==============
♻️ #3 不要なコメントを削除
# ==== Commit Messages(Template) ====
# :emoji: #Issue番号 変更内容
# ) :+1: #438 コメント追加
#       👍 #438 コメント追加
# ==== Emojis ====
# 🐛 :bug: バグ修正
# 例:🐛 #10 未登録のメールアドレスが入力された場合に500エラーとなる箇所を改修
# ✨ :sparkles: 新規機能(ファイル)の追加
# 例:✨ #2 faviconファイルの追加、及び、設定
# 👍 :+1: 機能修正(バグではない)
# 例:👍 #9 nameのプレースホルダを「氏名」から「お名前」に変更
# 🚿::shower: 不要な機能(ファイル)の削除
# 例:🚿 #30 未使用の関数「set_name」を削除
# ♻️ :recycle: リファクタリング(同じ挙動を担保した上での変更)
# 例:♻️ #30 n+1問題が発生していたループをeager_loadに変更
# ✅ :white_check_mark: テストの追加
# 例:✅ #30 Userモデルのテストを追加
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch main
# Your branch is up to date with 'origin/main'.
#
# Changes to be committed:
#       modified:   algo-method/search/double-loop/chapter1.py
#       modified:   atcoder/abc240/b/main.py
#
-- INSERT --

絵文字ってどうやって追加するの?

Macではcontrol+command+enterで絵文字を入力できます
このままだとコミットメッセージを打つたびに都度絵文字を調べないといけないのでお気に入り登録しましょう
まずは下記画像の右上にある四角を選択します

スクリーンショット 2022-09-29 6.41.11.png

選択するとお気に入りを選択できる画面が表示されるのでご自身が使用する絵文字を選択し、お気に入り追加を押します
スクリーンショット 2022-09-29 6.43.34.png

お気に入り追加すると下記のようになります
スクリーンショット 2022-09-29 6.49.57.png

コミットメッセージを書き終わった後にescを押し、:wq!と入力した後にEnterを押すとvimが閉じられてコミットが反映されます

vim
# ==== Commit Messages ==============
♻️  #3 不要なコメントを削除
# ==== Commit Messages(Template) ====
# :emoji: #Issue番号 変更内容
# ) :+1: #438 コメント追加
#       👍 #438 コメント追加
# ==== Emojis ====
# 🐛 :bug: バグ修正
# 例:🐛 #10 未登録のメールアドレスが入力された場合に500エラーとなる箇所を改修
# ✨ :sparkles: 新規機能(ファイル)の追加
# 例:✨ #2 faviconファイルの追加、及び、設定
# 👍 :+1: 機能修正(バグではない)
# 例:👍 #9 nameのプレースホルダを「氏名」から「お名前」に変更
# 🚿::shower: 不要な機能(ファイル)の削除
# 例:🚿 #30 未使用の関数「set_name」を削除
# ♻️ :recycle: リファクタリング(同じ挙動を担保した上での変更)
:wq!

また、コミットメッセージを反映させたくない際はescを押し、:qと入力した後にEnterを押すとコミットメッセージを保存せずにvimを閉じることができます

vim
# ==== Commit Messages ==============
♻️  #3 不要なコメントを削除
# ==== Commit Messages(Template) ====
# :emoji: #Issue番号 変更内容
# ) :+1: #438 コメント追加
#       👍 #438 コメント追加
# ==== Emojis ====
# 🐛 :bug: バグ修正
# 例:🐛 #10 未登録のメールアドレスが入力された場合に500エラーとなる箇所を改修
# ✨ :sparkles: 新規機能(ファイル)の追加
# 例:✨ #2 faviconファイルの追加、及び、設定
# 👍 :+1: 機能修正(バグではない)
# 例:👍 #9 nameのプレースホルダを「氏名」から「お名前」に変更
# 🚿::shower: 不要な機能(ファイル)の削除
# 例:🚿 #30 未使用の関数「set_name」を削除
# ♻️ :recycle: リファクタリング(同じ挙動を担保した上での変更)
:q

絵文字を使わずに下記のように打ってもGitHub上では絵文字として表示されます(ターミナル上では下記の例だと:recycle:と表示されます)

vim
# ==== Commit Messages ==============
:recycle: #3 不要なコメントを削除
# ==== Commit Messages(Template) ====
# :emoji: #Issue番号 変更内容
# ) :+1: #438 コメント追加
#       👍 #438 コメント追加
# ==== Emojis ====
# 🐛 :bug: バグ修正
# 例:🐛 #10 未登録のメールアドレスが入力された場合に500エラーとなる箇所を改修
# ✨ :sparkles: 新規機能(ファイル)の追加
# 例:✨ #2 faviconファイルの追加、及び、設定
# 👍 :+1: 機能修正(バグではない)
# 例:👍 #9 nameのプレースホルダを「氏名」から「お名前」に変更
# 🚿::shower: 不要な機能(ファイル)の削除
# 例:🚿 #30 未使用の関数「set_name」を削除
# ♻️ :recycle: リファクタリング(同じ挙動を担保した上での変更)
:q

git pushをした後にGitHubのリモートリポジトリを確認します
スクリーンショット 2022-08-12 20.46.11.png

画像のように絵文字とIssue番号が反映されていることが確認できました
また、#3とハイライトされている箇所はIssueの番号なので同じ番号のIssueをすでに作成しているのであればIssue番号をクリックすると該当するIssueまで遷移することができます

スクリーンショット 2022-08-12 20.48.14.png

コミットメッセージの修正方法

コミットメッセージを修正したいときはどうするの?

terminal
git commit --amend

を使用すると直前のコミットメッセージを修正することができます

例えば以下の方に本来は
👍 #2 railsのDockerfileを修正
とコミットメッセージを書きたかったところを間違えて
👍 #2 railsのDockfleを習性
と書いてしまったとします

vim
# ==== Commit Messages ==============
👍  #2 railsのDockfleを習性
# ==== Commit Messages(Template) ====
# :emoji: #Issue番号 変更内容
# ) :+1: #438 コメント追加
#       👍 #438 コメント追加
# ==== Emojis ====
# 🐛 :bug: バグ修正
# 例:🐛 #10 未登録のメールアドレスが入力された場合に500エラーとなる箇所を改修
# ✨ :sparkles: 新規機能(ファイル)の追加
# 例:✨ #2 faviconファイルの追加、及び、設定
# 👍 :+1: 機能修正(バグではない)
# 例:👍 #9 nameのプレースホルダを「氏名」から「お名前」に変更
# 🚿::shower: 不要な機能(ファイル)の削除
# 例:🚿 #30 未使用の関数「set_name」を削除
# ♻️ :recycle: リファクタリング(同じ挙動を担保した上での変更)
:wq!

Gitのlogを確認します

terminal
git log --oneline

すると、間違ったコミットメッセージが反映されてしまっていることがわかります

terminal
e86d3c3 (HEAD -> main)  👍 #2 railsのDockfleを習性
2129246 (origin/main, origin/HEAD) Merge pull request #1 from shun198/feature/test01

前述の--amendを使います

terminal
git commit --amend

するとVimが起動します
iを押してinsertモートにした後にコミットメッセージを修正することができます

terminal
👍  #2 railsのDockfleを習性

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Mon Sep 19 09:39:03 2022 +0900
#
# On branch main
# Your branch is ahead of 'origin/main' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#       modified:   containers/rails/Dockerfile
#
~                                                                                
~
-- INSERT --

コミットメッセージを修正した後にescを押し、:wq!と入力した後にEnterを押すとvimが閉じられてコミットが反映されます

vim
 👍  #2 railsのDockerfileを修正

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Mon Sep 19 09:39:03 2022 +0900
#
# On branch main
# Your branch is ahead of 'origin/main' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#       modified:   containers/rails/Dockerfile
#
~                                           
~
:wq!

コミットメッセージが修正されていることが確認できました

terminal
72eef02 (HEAD -> main) 👍 #2 railsのDockerfileを修正
2129246 (origin/main, origin/HEAD) Merge pull request #1 from shun198/feature/test01

これでコミットメッセージのテンプレートの作成方法については以上になります

まとめ

特に初心者はテンプレートを作成、設定することで

  • コミットメッセージのカンペを簡単に常時閲覧、編集できる
  • 絵文字を暗記しなくていい
  • 都度テンプレートファイルを書き換えることで運用の変更に対応しやすくなる

などメリットが多いのでぜひ使ってみてください

参考

49
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?