Utilisation d'un point d'exclamation dans un message de validation Git via la ligne de commande

152

Comment entrer un point d'exclamation dans un message de validation Git à partir de la ligne de commande?

Il est possible d'échapper au point d'exclamation avec une barre oblique inverse, mais la barre oblique inverse se retrouve également dans le message de validation.

Je veux quelque chose comme ça:

git commit -am "Nailed it!"
Daniel X Moore
la source
6
Pour une explication de la raison pour laquelle ce problème existe en premier lieu: askubuntu.com/questions/434832/…
Mark Amery

Réponses:

226

Utilisez des guillemets simples au lieu de guillemets doubles

git commit -am 'Nailed it!'

Alternativement, si vous avez besoin d'utiliser des guillemets pour une raison quelconque mais que vous voulez toujours un littéral, !désactivez l'expansion de l'historique en haut de votre script viaset +H

SiegeX
la source
48
Ou mélangez simplement vos citations:git commit -am "$FOO: Nailed it"'!'
Cascabel
4
Cela ne fonctionnait pas pour moi sous OS X, alors j'ai juste utilisé git commit(no -m) pour ouvrir un éditeur de texte pour mon message.
Kevin C.
Sous OSX, utilisez git commit -m "This is the best code ever"!comme décrit dans @Ryan H. answer.
mljrg du
42

Une autre façon de résoudre ce problème est d'ajouter un espace après ! comme:

git commit -am "Nailed it! "

Notez l' espace entre ! et le dernier " .

(L'espace ne sera pas inclus dans le message de validation - Git supprime automatiquement les espaces de fin des messages de validation.)

nicky_zs
la source
3
Cela me semble la solution la plus simple et autorise les guillemets doubles avec interpolation variable: git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Alex Hall
4

Pas besoin de se souvenir des citations ou des échappements à utiliser à la place

  1. Tapez votre commande (ou une partie de celle-ci)
  2. Dans votre ligne de commande, appuyez sur Ctr X E»pour ouvrir votre" éditeur externe ".
  3. Modifiez votre commande et fermez votre éditeur.

… La commande sera exécutée et tous les caractères spéciaux apparaîtront correctement dans le message de validation Git!

(NB beaucoup d'autres utilisations: taper des commandes complexes, ajouter des sauts de ligne dans votre message de commit etc.)

PDK
la source
4

Si vous avez besoin d'utiliser des guillemets doubles et que !est le dernier caractère du message, gardez simplement l' !extérieur des guillemets , car nous n'utilisons que des guillemets pour que les espaces soient inclus dans le message.

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

Si vous devez inclure une !chaîne médiane, vous pouvez utiliser des guillemets simples, mais si vous devez utiliser un guillemet simple littéral, vous devrez fermer votre guillemet, puis mettre l' 'extérieur de la chaîne en l'échappant. Donc, disons que votre message est I don't like it! Reverting again!, il peut être composé avec 'I don'+ \'+'t like it! Reverting again!'

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

Tout ce qui est plus compliqué que cela, vous feriez probablement mieux de git commitlaisser git invoquer votre éditeur de texte par défaut :)

Ryan H.
la source
1

Vous pouvez également taper:

git commit -am "Nailed it
!
"

Donc, appuyez simplement sur Entrée et placez le point d'exclamation sur une nouvelle ligne, puis fermez le message de validation. J'ai trouvé celui-là par accident un jour.

cg22
la source
6
Cela insérera le saut de ligne littéral avant le point d'exclamation dans le message de validation, ce qui est laid. -1.
Mark Amery
-3

Hmm. L'échapper avec une barre oblique n'apparaît pas dans le message de validation pour moi.

git commit -m "Nailed it\!"
Steve Geluso
la source