Gitは、コミット時に#
で始まる行をコメント行として扱います。これは、チケット追跡システムで作業し、行の先頭にチケット番号を書き込もうとするときに非常に迷惑です。
#123 salt hashed passwords
gitはコミットメッセージから行を削除するだけです。ハッシュをエスケープする方法はありますか? \
と!
を試しましたが、何も機能しません。 #
の前の空白は保持されるため、問題に対する有効な解決策でもありません。
この動作は、git commit
のデフォルトの 'クリーンアップ'動作の一部です。 #
で始まる行を保持する場合は、代替のクリーンアップモードを使用できます。
例えば。
git commit --cleanup=whitespace
これを行う場合、コミットに表示したくない#
行をすべて削除するように注意する必要があります。
git1.8.2(2013年2月) であるため、コミットメッセージのコメント行には「#
」とは異なる文字を使用できます。
これにより、バグ番号の参照に「#
」を使用できます。
Gitがエディターでメッセージを編集するようにユーザーに要求するときに提供するさまざまな「ヒント」行は、デフォルトで「
#
」でコメント化されています。
core.commentChar
構成変数を使用して、この「#
」を別の文字にカスタマイズできます。
理論的には、couldはcore.commentChar
Word(複数文字)を入力できましたが、git 2.0.x/2.1はより厳密になります(2014年第3四半期)。
commit 50b54fd by NguyễnTháiNgọcDuy(pclouds
) を参照してください。
コメントstringsはサポートしていません(少なくともまだ)。また、マルチバイト文字エンコーディングも誤って解釈される可能性があります。
これに違反するため、2つのコンマを使用したテストが更新されます。 eff80a9に
core.commentChar
を導入 (カスタム「コメント文字」を許可-2013-01-16)のパッチで追加されます。動作が必要なのは、私には明らかではありません理由。
git 2.0.x/2.1(2014年第3四半期)では、core.commentChar
の自動選択が追加されます。
を参照 commit 84c9dc2
core.commentChar
が "auto
"の場合、コメント文字はデフォルトのように '#
'で始まりますが、準備済みのメッセージに既にある場合は、小さなサブセットで別の文字を見つけます。 gitは予期せずにいくつかの行を削除するので、これは驚きを止めるはずです。Gitは '
#
'をカスタムテンプレートのコメント文字として認識し、最終的なコメント文字が異なる場合はそれを変換するほど賢くないことに注意してください。
カスタムテンプレートの「#」行をコミットメッセージの一部と見なします。したがって、これをカスタムテンプレートで使用しないでください。
「自動」の候補文字のリストは次のとおりです。
# ; @ ! $ % ^ & | :
つまり、git commit -m '#1 fixed issue'
のようなコマンドは、commitCharを自動的に ';
'に切り替えます。これは、コミットメッセージで '#
'が使用されたためです。
ここでの回答は良くて詳細ですが、私のようなgit noobにとって、git configオプションのカスタマイズはそれほど明白ではありません。コメント文字を#
から;
に変更する例を次に示します。
git config core.commentChar ";"
あなたがする必要があるのはそれだけです。
コマンドラインオプション-m
を使用できます。
git commit -m "#123 fixed"
インタラクティブなリベースを行っている場合、コミットメッセージを何も含まずに保存すると(先頭の#
がコメントになったため無視されたため)、gitは何をすべきかを示します。
Aborting commit due to empty commit message.
Could not amend commit after successfully picking 5e9159d9ce3a5c3c87a4fb7932fda4e53c7891db... 123 salt hashed passwords
This is most likely due to an empty commit message, or the pre-commit hook
failed. If the pre-commit hook failed, you may need to resolve the issue before
you are able to reword the commit.
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
したがって、メッセージを修正するだけです。
git commit --amend -m "#123 salt hashed passwords"
リベースを続行します。
git rebase --continue
git commit --cleanup=scissors
を使用する必要があります。 2014.05.21の Git v2.0. に追加されました
git commit --help
から
--cleanup=<mode>
scissors
Same as whitespace, except that everything from (and including) the line
"# ------------------------ >8 ------------------------" is truncated if the message
is to be edited. "#" can be customized with core.commentChar.
チケット番号に異なるプレフィックスを使用します。または、「バグ#42」のように、チケット番号の先頭にWordを追加します。または、単一のスペース文字を行の先頭に追加します。その空白を削除したい場合は、そのためのコミットフックを追加できます。
個人的には、このようなコミットメッセージの操作をフックで行わないようにしたいと思います。最も簡単な解決策は、おそらく問題を再考することです。
すべてのコミットは#issueNumber
で始まるため、この定型句をvim .git/hooks/commit-msg
に追加します。
NAME=$(git branch | grep '*' | sed 's/* //')
echo "$NAME"' '$(cat "$1") > "$1"
ブランチ#15
があり、コミットメッセージadd new awesome feature
を作成するとします。このアプローチでは、最終コミットメッセージは#15 add new awesome feature
になります。