Sim. Escreva a mensagem de confirmação em um arquivo diferente ( :w /some/other/path.txt
). Então saia do editor sem salvar ( :q!
). Se você já salvou o arquivo no caminho original, exclua tudo e escreva o arquivo vazio primeiro (uma mensagem de confirmação vazia abortará a confirmação).
Agora, quando estiver pronto para confirmar "por reais", use o arquivo de mensagens que você salvou no caminho alternativo.
Como alternativa, copie a mensagem de confirmação em um dos buffers do vim.
Vale a pena notar que você realmente não precisa fazer isso : commit --amend
permite alterar o commit depois que ele é feito, portanto a solução mais fácil é produzir o commit com o que você tem e corrigi-lo antes de pressionar. Você pode até terminar o commit no estado quebrado reset HEAD~
(redefine você para o estado em que sua cópia de trabalho estava antes do commit), corrigir sua cópia de trabalho e commit -a -c HEAD@{1}
usar a antiga mensagem de commit.
write the empty file (an empty commit message will abort the commit)
parte funcionou como um encanto, obrigado!Se o seu editor puder sair com um código de erro - o Git abortará a confirmação. Ao usar o VIM, digite
para sair com um código de erro diferente de zero e abortar a confirmação.
fonte
commit --amend
pois caso contrário você teria que excluir a mensagem de confirmação e:wq
.git commit --amend
vez degit rebase --continue
durante o rebase.Se você abriu o vim para escrever sua mensagem de confirmação, exclua as linhas que não começam com # e o git abortará sua confirmação
fonte
ggdG
cortará todo o conteúdo da mensagem e, da próxima vez que você executar,vim
poderá apenasP
o texto que você cortou anteriormente.Enquanto você pode abortar a confirmação, outra abordagem é alterar a confirmação posteriormente. Simplesmente confirme seu trabalho atual, faça as alterações adicionais desejadas
git add
e executegit commit --amend
. Você será colocado de volta no editor de mensagens de confirmação e, quando salvar, a confirmação será alterada para incluir as alterações adicionais e sua nova mensagem de confirmação.fonte
Sim é possivel. Para confirmar, seu editor DEVE escrever a mensagem de confirmação no arquivo
.git/COMMIT_EDITMSG
e sair com um código de status 0.Portanto, se você estiver usando VI / VIM, faça o seguinte ...
:w
(por padrão, isso salvará o conteúdo atual em.git/COMMIT_EDITMSG
):cq
git commit -eF .git/COMMIT_MESSAGE
O
-F /path/to/file
preencherá o editor com um determinado conteúdo de / path / to file /. No entanto, por padrão, isso executaria instantaneamente a confirmação, a menos que você forneça o-e
sinalizador adicionalmente para edição .fonte
/foo/bar/
diretório, relativo da raiz do projeto) comogit commit -eF ../../.git/COMMIT_MESSAGE
:w
do:sav committmp
egit commit -eF committmp
Eu costumo fazer minhas confirmações
IntelliJ
usando os terminais fornecidos. Infelizmente meus commits são manuais:git commit -m'my message' // etc
então a única coisa que acho seguro fazer é fechar a janela do terminal! Apenas destaque seu texto se quiser salvá-lo, copie e feche a janela do terminal.
fonte
A resposta @bdonlan é boa para essa pergunta, mas vou apontar para uma situação em que você pode querer uma solução melhor.
Digamos que você queira adicionar alterações para a última confirmação. Então você faz como @bdolan sugeriu:
Imagine que, durante a gravação da nova mensagem, você se arrepende de adicionar esses arquivos a essa confirmação. O problema é que você está preso com uma mensagem de confirmação já salva e sair do editor (com ou sem salvar) adicionará essas alterações à última confirmação. Voltar ao ponto em que você estava antes dessas ações requer que você divida o último commit - aposto que você deseja evitá-lo.
O truque é salvar e sair do editor enquanto ele tiver apenas linhas começando com
#
ou sem linhas. Quando você sair, você será recebido com a mensagem:E você não mudou a última confirmação.
fonte
git commit; vim ....; git commit --amend; git reset HEAD@{1}
. Ou seja: se eu quiser "desfazer" a alteração, não tenho que dividir a confirmação anterior. o objeto de confirmação que era HEAD antes da alteração é salvo comoHEAD@{1}
. Além disso, o zetta já sugeriu excluir todas as linhas que não são de comentário.