Uso de um ponto de exclamação em uma mensagem de confirmação do Git via linha de comando

152

Como insiro um ponto de exclamação em uma mensagem de confirmação do Git na linha de comando?

É possível escapar do ponto de exclamação com uma barra invertida, mas a barra invertida também termina na mensagem de confirmação.

Eu quero algo como isto:

git commit -am "Nailed it!"
Daniel X Moore
fonte
6
Para uma explicação de por que esse problema existe, em primeiro lugar: askubuntu.com/questions/434832/…
Mark Amery

Respostas:

226

Use aspas simples em vez de aspas duplas

git commit -am 'Nailed it!'

Como alternativa, se você precisar usar aspas duplas por qualquer motivo, mas ainda assim desejar um literal !, desative a expansão do histórico na parte superior do seu script viaset +H

SiegeX
fonte
48
Ou apenas misture suas citações:git commit -am "$FOO: Nailed it"'!'
Cascabel
4
Isso não estava funcionando para mim no OS X, então usei git commit(no -m) para abrir um editor de texto para a minha mensagem.
Kevin C.
No OSX, use git commit -m "This is the best code ever"!o descrito na resposta de @Ryan H..
mljrg
42

Outra maneira de resolver isso é adicionar um espaço depois ! gostar:

git commit -am "Nailed it! "

Observe o espaço entre ! e o último " .

(O espaço não será incluído na mensagem de confirmação - o Git corta o espaço em branco à direita das mensagens de confirmação automaticamente.)

nicky_zs
fonte
3
Esta parece ser a solução mais simples para mim, e permite aspas com interpolação variável: git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Alex Hall
4

Não é necessário lembrar que aspas ou escapes usar;

  1. Digite seu comando (ou parte dele)
  2. Na sua linha de comando, pressione Ctr X E»abrirá o seu" editor externo ".
  3. Edite seu comando e feche seu editor.

… O comando será executado e quaisquer caracteres especiais aparecerão corretamente na mensagem de confirmação do Git!

(NB muitos outros usos: digitando comandos complexos, adicionando quebras de linha na sua mensagem de confirmação etc.)

PDK
fonte
4

Se você precisar usar aspas duplas e esse !for o último caractere da mensagem, mantenha o !lado de fora das aspas , pois estamos usando apenas aspas para que os espaços sejam incluídos na mensagem.

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

Se você precisar incluir uma !sequência intermediária, poderá usar aspas simples, mas se precisar usar uma aspas simples literal, será necessário fechar sua cotação e colocar a parte 'externa da sequência, escapando-a. Então, digamos que sua mensagem seja I don't like it! Reverting again!, ela pode ser composta com 'I don'+ \'+'t like it! Reverting again!'

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

Qualquer coisa mais complicada do que isso, provavelmente você está melhor git commite permite que o git invoque seu editor de texto padrão :)

Ryan H.
fonte
1

Você também pode digitar:

git commit -am "Nailed it
!
"

Então, basta pressionar enter e colocar o ponto de exclamação em uma nova linha e fechar a mensagem de confirmação. Descobri esse por acidente um dia.

cg22
fonte
6
Isso inserirá a nova linha literal antes do ponto de exclamação na mensagem de confirmação, que é feia. -1.
Mark Amery
-3

Hmm. Escapá-lo com uma barra não aparece na mensagem de confirmação para mim.

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