web-dev-qa-db-ja.com

ハッシュマーク(#)を使用してGitコミットメッセージを開始する

Gitは、コミット時に#で始まる行をコメント行として扱います。これは、チケット追跡システムで作業し、行の先頭にチケット番号を書き込もうとするときに非常に迷惑です。

#123 salt hashed passwords

gitはコミットメッセージから行を削除するだけです。ハッシュをエスケープする方法はありますか? \!を試しましたが、何も機能しません。 #の前の空白は保持されるため、問題に対する有効な解決策でもありません。

256
knittl

この動作は、git commitのデフォルトの 'クリーンアップ'動作の一部です。 #で始まる行を保持する場合は、代替のクリーンアップモードを使用できます。

例えば。

git commit --cleanup=whitespace

これを行う場合、コミットに表示したくない#行をすべて削除するように注意する必要があります。

209
CB Bailey

git1.8.2(2013年2月) であるため、コミットメッセージのコメント行には「#」とは異なる文字を使用できます。

これにより、バグ番号の参照に「#」を使用できます。

Gitがエディターでメッセージを編集するようにユーザーに要求するときに提供するさまざまな「ヒント」行は、デフォルトで「#」でコメント化されています。

core.commentChar構成変数を使用して、この「#」を別の文字にカスタマイズできます。


理論的には、couldcore.commentChar Word(複数文字)を入力できましたが、git 2.0.x/2.1はより厳密になります(2014年第3四半期)。

commit 50b54fd by NguyễnTháiNgọcDuy(pclouds を参照してください。

config:core.commentCharを厳しくする

コメント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を自動的に ';'に切り替えます。これは、コミットメッセージで '#'が使用されたためです。

120
VonC

ここでの回答は良くて詳細ですが、私のようなgit noobにとって、git configオプションのカスタマイズはそれほど明白ではありません。コメント文字を#から;に変更する例を次に示します。

git config core.commentChar ";"

あなたがする必要があるのはそれだけです。

72
Matthieu Napoli

コマンドラインオプション-mを使用できます。

git commit -m "#123 fixed"
60
Olivier Verdier

インタラクティブなリベースを行っている場合、コミットメッセージを何も含まずに保存すると(先頭の#がコメントになったため無視されたため)、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
30
Owain Williams

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.
22
Sungam

チケット番号に異なるプレフィックスを使用します。または、「バグ#42」のように、チケット番号の先頭にWordを追加します。または、単一のスペース文字を行の先頭に追加します。その空白を削除したい場合は、そのためのコミットフックを追加できます。

個人的には、このようなコミットメッセージの操作をフックで行わないようにしたいと思います。最も簡単な解決策は、おそらく問題を再考することです。

3
wilhelmtell

すべてのコミットは#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になります。

1
valignatev