はじめに

GitHub で Issue と紐付けるため、# から始まるコミットメッセージにしようとしたらコメント扱いされてハマったので対処方法を残しておく。

TL;DR

  • 1行メッセージなら git commit -m "#x hogehoge" で OK
  • 複数行メッセージなら git commit --cleanup=whitespace で OK
    • 余計な内容がコミットメッセージに残らないように注意

目的・やったこと

Git のコミットで # をコメント扱いされない方法を調べた。

目次

  1. はじめに
  2. TL;DR
  3. 目的・やったこと
  4. 環境・条件
  5. 詳細
    1. 結論
    2. 1行メッセージ
    3. 複数行メッセージ
      1. ダメな例
  6. まとめ
  7. 参考文献

環境・条件

1
2
3
4
5
6
7
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.5
BuildVersion: 18F132

$ git --version
git version 2.22.0

詳細

結論

冒頭に書いたけど、以下の対処でいける。

  • 1行メッセージなら git commit -m "#x hogehoge" で OK
  • 複数行メッセージなら git commit --cleanup=whitespace で OK

1行メッセージ

-m オプションを使えば OK。

1
2
3
4
5
6
7
8
$ git add xxxx
$ git commit -m "#1 test"
$ git log
commit 959034e5572b599f92c4b4956456c9bfa5c84e68 (HEAD -> master)
Author: r17n <4716989+17number@users.noreply.github.com>
Date: Tue Jul 30 23:14:31 2019 +0900

#1 test

複数行メッセージ

--cleanup=whitespace オプションを使えば OK。

1
$ git commit --cleanup=whitespace

コミットメッセージ入力時、# ----... の行より上の部分が全て記録されるので不要な行は消すこと。

1
2
3
4
5
6
7
8
9
10
11
# test↲
test↲
# ------------------------ >8 ------------------------↲
# Do not modify or remove the line above.↲
# Everything below it will be ignored.↲
diff --git a/path/to/file b/path/to/file↲
new file mode 100644↲
index 0000000..6011284↲
--- /dev/null↲
+++ b/path/to/file↲
@@ -0,0 +1,52 @@↲

↑ が ↓ のようになる。

1
2
3
4
5
6
7
$ git log
commit 13e08125b9d9198f7c44ee6e01207c8038740e01 (HEAD -> master)
Author: r17n <4716989+17number@users.noreply.github.com>
Date: Tue Jul 30 10:19:11 2019 +0900

# test
test

ダメな例

普段 --cleanup=whitespace オプションが有効化されてないと、以下の状態で保存してしまうかもしれない。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# test↲
test↲
# Please enter the commit message for your changes. Lines starting↲
# with '#' will be ignored, and an empty message aborts the commit.↲
#↲
# On branch master↲
# Your branch is up to date with 'origin/master'.↲
#↲
# Changes to be committed:↲
#»new file: path/to/file↲
#↲
# ------------------------ >8 ------------------------↲
# Do not modify or remove the line above.↲
# Everything below it will be ignored.↲
-commit-message-starting-with-hash.md↲
new file mode 100644↲
index 0000000..6011284↲
--- /dev/null↲
+++ b/path/to/file↲
@@ -0,0 +1,52 @@↲

すると以下のようなコミットログになるので注意。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
commit 307be62beb080a3f7bc37f6c8ccd8fb2eca31b52 (HEAD -> master)
Author: r17n <4716989+17number@users.noreply.github.com>
Date: Tue Jul 30 10:19:11 2019 +0900

# test
test

# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
#
# Date: Tue Jul 30 10:19:11 2019 +0900
#
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# new file: path/to/file
#

まとめ

  • 1行メッセージなら git commit -m "#x hogehoge" で OK
  • 複数行メッセージなら git commit --cleanup=whitespace で OK
    • 余計な内容がコミットメッセージに残らないように注意

参考文献

関連記事