valid,invalid

関心を持てる事柄について

git commit message でハッシュ # から始まるメッセージを残す

git commit コマンドでメッセージを入力する際、デフォルトでは # から始まる行は commit message から取り除かれる。この挙動を変更し、commit message にハッシュ # から始まるメッセージを残す方法について。

結論

git config で設定可能な以下のいずれかで対応できる。

  1. core.commentChar# 以外の文字、または auto を指定する
  2. commit.cleanup で cleanup mode をwhitespaceに指定する

StackOverflowの以下の質問に詳しい。

stackoverflow.com

なぜ消えるのか

これは 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.