Uso di un punto esclamativo in un messaggio di commit Git tramite la riga di comando


152

Come posso inserire un punto esclamativo in un messaggio di commit Git dalla riga di comando?

È possibile uscire dal punto esclamativo con una barra rovesciata, ma anche la barra rovesciata finisce anche nel messaggio di commit.

Voglio qualcosa del genere:

git commit -am "Nailed it!"

6
Per una spiegazione del perché questo problema esiste in primo luogo: askubuntu.com/questions/434832/…
Mark Amery,

Risposte:


226

Usa virgolette singole anziché doppie

git commit -am 'Nailed it!'

In alternativa, se hai bisogno di usare virgolette doppie per qualsiasi motivo, ma desideri comunque un valore letterale, !disattiva l'espansione della cronologia nella parte superiore dello script tramiteset +H


48
O semplicemente mescola le tue citazioni:git commit -am "$FOO: Nailed it"'!'
Cascabel,

4
Questo non funzionava per me in OS X, quindi ho usato git commit(no -m) per aprire un editor di testo per il mio messaggio.
Kevin C.

In OSX utilizzare git commit -m "This is the best code ever"!come descritto nella risposta @Ryan H.
mljrg,

42

Un altro modo per risolverlo è aggiungere uno spazio dopo ! piace:

git commit -am "Nailed it! "

Nota lo spazio tra ! e l'ultimo " .

(Lo spazio non verrà incluso nel messaggio di commit - Git taglia automaticamente gli spazi bianchi finali dai messaggi di commit.)


3
Questa mi sembra la soluzione più semplice e consente doppie virgolette con interpolazione variabile: git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Alex Hall

4

Non è necessario ricordare quali citazioni o escape utilizzare

  1. Digita il tuo comando (o parte di esso)
  2. Nella riga di comando, premi Ctr X E»aprirà il tuo" editor esterno ".
  3. Modifica il tuo comando e chiudi l'editor.

... il comando verrà eseguito e tutti i caratteri speciali verranno visualizzati correttamente nel messaggio di commit di Git!

(NB molti altri usi: digitare comandi complessi, aggiungere interruzioni di riga nel messaggio di commit, ecc.)


4

Se devi usare le virgolette doppie e l' !ultimo è il carattere nel messaggio, mantieni l' !esterno delle virgolette , poiché stiamo usando solo le virgolette in modo che gli spazi vengano inclusi nel messaggio.

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

Se è necessario includere la !stringa media, è possibile utilizzare virgolette singole, ma se è necessario utilizzare una virgoletta singola letterale, è necessario chiudere la citazione, quindi inserire l' 'esterno della stringa sfuggendola. Quindi, supponiamo che il tuo messaggio sia I don't like it! Reverting again!, questo può essere composto con 'I don'+ \'+'t like it! Reverting again!'

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

Qualcosa di più complicato di così, probabilmente stai meglio con git commite lasciando che git invochi l'editor di testo predefinito :)


1

Puoi anche digitare:

git commit -am "Nailed it
!
"

Quindi basta premere invio e posizionare il punto esclamativo su una nuova riga, quindi chiudere il messaggio di commit. L'ho scoperto per caso un giorno.


6
Ciò inserirà la nuova riga letterale prima del punto esclamativo nel messaggio di commit, che è brutto. -1.
Mark Amery,

-3

Hmm. Evitarlo con una barra non viene visualizzato nel messaggio di commit per me.

git commit -m "Nailed it\!"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.