Uso de un signo de exclamación en un mensaje de confirmación de Git a través de la línea de comando

152

¿Cómo ingreso un signo de exclamación en un mensaje de confirmación de Git desde la línea de comando?

Es posible escapar del signo de exclamación con una barra diagonal inversa, pero luego la barra diagonal inversa también termina en el mensaje de confirmación.

Quiero algo como esto:

git commit -am "Nailed it!"
Daniel X Moore
fuente
66
Para una explicación de por qué este problema existe en primer lugar: askubuntu.com/questions/434832/…
Mark Amery

Respuestas:

226

Use comillas simples en lugar de comillas dobles

git commit -am 'Nailed it!'

Alternativamente, si necesita usar comillas dobles por cualquier razón, pero aún quiere un literal !, apague la expansión del historial en la parte superior de su script a través deset +H

SiegeX
fuente
48
O simplemente mezcle sus citas:git commit -am "$FOO: Nailed it"'!'
Cascabel
44
Esto no funcionaba para mí en OS X, así que simplemente usé git commit(no -m) para abrir un editor de texto para mi mensaje.
Kevin C.
En OSX use git commit -m "This is the best code ever"!como se describe en @Ryan H. answer.
mljrg
42

¡Otra forma de resolver eso es agregar un espacio después ! me gusta:

git commit -am "Nailed it! "

Tenga en cuenta el espacio entre ! y el último " .

(El espacio no se incluirá en el mensaje de confirmación: Git recorta los espacios en blanco finales de los mensajes de confirmación automáticamente).

nicky_zs
fuente
3
Esta parece la solución más simple para mí, y permite comillas dobles con interpolación variable: git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Alex Hall
4

No es necesario recordar qué citas o escapes usar, en su lugar

  1. Escriba su comando (o parte de él)
  2. En su línea de comando, presione Ctr X E»abrirá su" editor externo ".
  3. Edite su comando y cierre su editor.

... el comando se ejecutará y cualquier carácter especial se mostrará correctamente en el mensaje de confirmación de Git.

(Nota: muchos otros usos: escribir comandos complejos, agregar saltos de línea en su mensaje de confirmación, etc.)

PDK
fuente
4

Si necesita usar comillas dobles y !es el último carácter en el mensaje, simplemente mantenga el !exterior de las comillas , ya que solo usamos comillas para que los espacios se incluyan en el mensaje.

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

Si necesita incluir una !cadena intermedia, puede usar comillas simples, pero si necesita usar una comilla simple literal, deberá cerrar su cita, luego colocar el 'exterior de la cadena escapándola. Entonces, digamos que su mensaje es I don't like it! Reverting again!, esto puede estar compuesto con 'I don'+ \'+'t like it! Reverting again!'

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

Algo más complicado que esto, probablemente estés mejor git commity dejes que git invoque tu editor de texto predeterminado :)

Ryan H.
fuente
1

También puedes escribir:

git commit -am "Nailed it
!
"

Tan solo presione enter y coloque el signo de exclamación en una nueva línea, luego cierre el mensaje de confirmación. Lo encontré por accidente un día.

cg22
fuente
66
Esto insertará la nueva línea literal antes del signo de exclamación en el mensaje de confirmación, que es feo. -1.
Mark Amery el
-3

Hmm Escaparlo con una barra diagonal no aparece en el mensaje de confirmación para mí.

git commit -m "Nailed it\!"
Steve Geluso
fuente