git commit コマンドでメッセージを入力する際、デフォルトでは #
から始まる行は commit message から取り除かれる。この挙動を変更し、commit message にハッシュ #
から始まるメッセージを残す方法について。
結論
git config で設定可能な以下のいずれかで対応できる。
core.commentChar
に#
以外の文字、またはauto
を指定するcommit.cleanup
で cleanup mode をwhitespace
に指定する
StackOverflowの以下の質問に詳しい。
なぜ消えるのか
これは cleanup と呼ばれる message の余分な文字列を取り除く仕組みによるもの。 cleanup が持ついくつかの mode のうち、ほぼデフォルトで使用されるstrip
mode では空行や行末の空白やコメント行を取り除く。
cleanup mode は git config で設定するか、commit のたびにgit commit --cleanup=<mode>
で指定することができる。
--cleanup=whitespace
を指定した場合の挙動はstrip
mode とほぼ同じだがコメント行は残される。
利用可能な mode はman git-commit
などで確認するとよい。
ref Git - git-config Documentation
コメント行とは
core.commentChar
で指定した文字から始まる行はコメント行として認識される。core.commentChar
のデフォルトは#
。
#
以外の文字を指定することで、#
から始まる行はコメント行とみなされなくなるので commit message に残すことができる。
または auto
を指定すると、git-commit は既存のコミットメッセージのどの行の先頭文字でもない文字を自動的に選択するようだ。賢い。
ref Git - git-config Documentation
個人的設定
global な.gitconfig
に以下をcommentChar = ";"
を設定した。たぶんセミコロン;
始まりの commit message を書いたことがない…はず。
auto
も面白そうだけど自動的に文字が選択されるのもちょっと挙動が読めなくて、問題が起きたときに気づけず混乱しそう…と日和った。
[core] commentChar = ";"
環境
$ git --version git version 2.28.0
This article is for ohbarye Advent Calendar 2020.