2013-05-16 13 views
28

Quando utilizzo git commit --amend o git rebase -i, mi si apre la possibilità di apportare modifiche. Se poi cambio idea e esco da vim senza apportare modifiche, viene comunque effettuato un commit che viene visualizzato in git reflog.Esci da Vim senza apportare modifiche in Git

Come si esce dall'editor senza eseguire alcuna operazione?

+0

Si noti che 'git reflog' è locale per quella copia di lavoro. È la cronologia cronologica del tuo TESTO piuttosto che la storia logica. –

+1

git si impegna quando rileva che il file temporaneo è stato modificato (stato salvato). La domanda più semplice qui è "Come posso uscire da vim senza salvare?" La risposta, come ha mostrato gpojd, è ': q!'. –

+0

git sostituisce il commit precedente (il tag hash cambia) anche se esco senza salvare. – j0fb

risposta

14

Per ottenere git di non apportare modifiche quando si sta eseguendo git commit --amend o git rebase -i.

Basta eliminare il messaggio (e salvare). Tutto git fa è cercare un messaggio non vuoto per vedere se è successo un commit valido. Dato che c'è un messaggio di commit (perché hai già commesso qualcosa prima) git pensa che sia un commit o un rebase valido.

+0

do I \ delete anche i commenti o solo la parte non-comment? – Shanimal

+1

@ Non sufficiente commento non soddisfacente. – FDinoff

26

Quando non hai apportato modifiche e salvato, :q! potrebbe essere sufficiente (in un semplice commit, quando non stai modificando), ma se sei come me, è probabile che tu abbia già (anche inconsciamente) persistito il messaggio modificato

Git (e altri strumenti simili che utilizzano Vim per modificare un messaggio) interromperà l'intero processo (ignorando eventuali modifiche salvate nel messaggio) se l'editor si chiude con uno stato di uscita non riuscita. Puoi farlo in Vim con il comando :cq[uit]!.

+13

+1 per ': cq', ma -1 per': q! '- questo non è corretto, mantiene solo il messaggio di commit pre-modificato e applica eventuali modifiche di stage effettive. –

+1

@CharlesBailey Per modificare, hai ragione, ma per semplici commit, il messaggio vuoto impedirà a Git di impegnarsi. Intendevo la mia prima frase come anticipazione verso la risposta vera e propria; la discussione nella risposta di gpjod ha già mostrato i suoi problemi. Ma grazie per averlo evidenziato ancora una volta! –

+0

OK, ma l'intera domanda riguarda solo il caso di "modifica", quindi penso che sia un po 'fuorviante menzionarlo affatto; almeno senza dire qualcosa come "se non sei ** che modifica ..." per prima cosa. –

25
:cq! 

Questo imporrà un errore a Vim e non salverà alcuna modifica. Link al manuale di Vim.

Problemi correlati