Vale acrescentar que você precisa pressionar Esc antes de entrar :q!para sair do vim.
M_Merciless 24/06
Respostas:
332
Você tem duas opções:
Forneça uma mensagem de confirmação vazia. Se for um novo commit e você ainda não salvou a mensagem, você pode simplesmente usá-lo :q!(sair sem salvar). Se você já salvou (ou está alterando uma confirmação anterior), basta excluir a mensagem de log inteira e salvar novamente. Isso pode ser feito com ggdG+ :wqno Vim.
Faça o editor sair com um código de saída diferente de zero. No Vim, você pode usar :cq(saia com um código de erro).
É importante notar que você sempre pode redefinir sua cópia de trabalho para o estado em que estava antes da confirmação git reset HEAD^.
: cq é o negócio. Por alguma razão, o git continua, independentemente de eu usar: q!
Sirex
2
git reset HEAD ^ descartaria modificações locais
juanmf
2
: q! provavelmente não funciona porque já existe uma mensagem predefinida, você está apenas editando.
Papipo
Soluço: Se git reset HEAD^pedir mais, seu shell pode interpretar ^ como continuação de linha. Tente git reset "HEAD^", git reset HEAD^^ou em git reset HEAD~1vez disso, por esta resposta: stackoverflow.com/questions/14203952/git-reset-asks-more
Jake Stevens-Haas
76
:q!não funciona ao alterar uma confirmação. Ele não atualiza a mensagem de confirmação, mas executa a alteração :-(
Eu gostaria de poder adicionar outro +1. Eu estive aqui várias vezes quando minha alteração pega o commit errado.
Wyrmwood
8
Resumindo:
Ao criar um novo commit (ie git commit), pare de usar :q!.
Ao alterar (ou seja git commit --amend), remova a mensagem de confirmação (apenas as primeiras linhas que não começam com um #), por exemplo, mantendo ve pressionando as teclas de seta para selecioná-la e pressionando Excluir. Saia com :wqpara aplicar as alterações ! Se você usar:q! as alterações serão perdidas e a mensagem de confirmação anterior será usada.
Ao usar o VIM, é aceitável sair dos dois casos :cq- o VIM será encerrado com um código de erro e a confirmação será cancelada.
:q!
para sair do vim.Respostas:
Você tem duas opções:
Forneça uma mensagem de confirmação vazia. Se for um novo commit e você ainda não salvou a mensagem, você pode simplesmente usá-lo
:q!
(sair sem salvar). Se você já salvou (ou está alterando uma confirmação anterior), basta excluir a mensagem de log inteira e salvar novamente. Isso pode ser feito com ggdG+:wq
no Vim.Faça o editor sair com um código de saída diferente de zero. No Vim, você pode usar
:cq
(saia com um código de erro).É importante notar que você sempre pode redefinir sua cópia de trabalho para o estado em que estava antes da confirmação
git reset HEAD^
.fonte
git reset HEAD^
pedir mais, seu shell pode interpretar ^ como continuação de linha. Tentegit reset "HEAD^"
,git reset HEAD^^
ou emgit reset HEAD~1
vez disso, por esta resposta: stackoverflow.com/questions/14203952/git-reset-asks-more:q!
não funciona ao alterar uma confirmação. Ele não atualiza a mensagem de confirmação, mas executa a alteração :-(:cq
aborta completamente a alteração.fonte
Resumindo:
git commit
), pare de usar:q!
.git commit --amend
), remova a mensagem de confirmação (apenas as primeiras linhas que não começam com um #), por exemplo, mantendo ve pressionando as teclas de seta para selecioná-la e pressionando Excluir. Saia com:wq
para aplicar as alterações ! Se você usar:q!
as alterações serão perdidas e a mensagem de confirmação anterior será usada.Ao usar o VIM, é aceitável sair dos dois casos
:cq
- o VIM será encerrado com um código de erro e a confirmação será cancelada.fonte