コマンドラインを介したGit commitメッセージでの感嘆符の使用


152

コマンドラインからGit commitメッセージに感嘆符を入力するにはどうすればよいですか?

バックスラッシュで感嘆符をエスケープすることは可能ですが、バックスラッシュはコミットメッセージにも含まれます。

私はこのようなものが欲しい:

git commit -am "Nailed it!"

6
この問題が最初に存在する理由の説明については、askubuntu.com
Mark Amery

回答:


226

二重引用符の代わりに単一引用符を使用する

git commit -am 'Nailed it!'

あるいは、何らかの理由で二重引用符を使用する必要があるが、それでもリテラルが必要な場合!は、スクリプトの上部にある履歴の展開をオフにします。set +H


48
または、見積もりを混ぜてください:git commit -am "$FOO: Nailed it"'!'
Cascabel 2011

4
これはOS Xでは機能しgit commitなかったため、メッセージ用のテキストエディターを開くために(-mを使用しないで)使用しました。
Kevin C.

git commit -m "This is the best code ever"!OSRでは、@ Ryan H.の回答で説明されているように使用します。
mljrg 2018

42

それを解決する別の方法は、後にスペースを追加することですお気に入り:

git commit -am "Nailed it! "

間のスペースに注意してくださいそしてラスト"

(スペースはコミットメッセージに含まれません-Gitはコミットメッセージから末尾の空白を自動的に削除します。)


3
これは私にとって最も簡単な解決策のようであり、可変補間を使用した二重引用符を許可します:git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Alex Hall

4

代わりに、使用する引用符やエスケープを覚えておく必要はありません。

  1. コマンド(またはその一部)を入力します
  2. コマンドラインでCtr X E»を押す と、「外部エディタ」が開きます。
  3. コマンドを編集し、エディターを閉じます。

…コマンドが実行され、Gitコミットメッセージに特殊文字が正しく表示されます。

(他の多くの用途:複雑なコマンドの入力、コミットメッセージへの改行の追加など)


4

あなたは二重引用符を使用する必要があるとした場合!、メッセージの最後の文字である、ちょうど保つ!引用符の外にスペースがメッセージに含まれ得るように、我々は唯一の引用符を使用していることから、。

git commit -m "Reverting last commit because I don't like it"!

!中間の文字列を含める必要がある場合は一重引用符を使用できますが、リテラルの単一引用符を使用する必要がある場合は、引用符を閉じてから、'エスケープして文字列の外側に配置する必要があります。たとえば、メッセージがI don't like it! Reverting again!であるとします。これは'I don'+ \'+'t like it! Reverting again!'

git commit -m 'I don'\''t like it! Reverting again!'

これよりも複雑なものは、おそらくgit commitgitでデフォルトのテキストエディターを起動する方がよいでしょう:)


1

次のように入力することもできます。

git commit -am "Nailed it
!
"

したがって、Enterキーを押して感嘆符を新しい行に配置し、コミットメッセージを閉じてください。ある日偶然見つけた。


6
これは感嘆符の前にリテラルの改行をコミットメッセージに挿入しますが、これは醜いです。-1。
Mark Amery 2016年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.