Magit - Annulla l'ultimo commit - Manipolazione storia


12

Questa domanda StackOverflow ha le migliori soluzioni / approcci per annullare gli ultimi commit.

Ho iniziato a usare Magit un paio di settimane fa e dopo aver esaminato tutta la sua documentazione non ho ancora un modo definitivo / migliore per annullare una modifica commessa per errore.

Ad esempio:
per annullare e ripetere l'ultimo commit possiamo usare:

$ git commit -m "Something terribly misguided"
$ git reset HEAD~
<< edit files as necessary >>
$ git add ... 
$ git commit -c ORIG_HEAD # To keep the same commit message

Quale dovrebbe essere il miglior flusso di lavoro per riprodurre questa procedura usando Magit ?

Risposte:


17

È possibile utilizzare magit-reset(associato per impostazione predefinita a x). Il commit al punto verrà utilizzato come predefinito per il prompt, ma è possibile inserire qualsiasi valore di revisione desiderato ("HEAD ~" qui).

I comandi di ripristino sono descritti nella sezione "Ripristino" del manuale: https://magit.vc/manual/magit/Resetting.html

Per riutilizzare il messaggio di commit, è possibile utilizzare l' =Copzione nel popup di commit. Purtroppo, il prompt al momento non offre alcun valore di completamento (penso che probabilmente dovrebbe almeno offrire ORIG_HEAD), ma prima di reimpostare è possibile inserire l'hash del commit corrente nel kill ring (ad es. Con C-wsulla riga "Head:" del buffer di stato) e quindi, dopo il ripristino, lo yank come valore per l' =Copzione.


Alcuni commenti aggiuntivi:

  • Invece di usare =C, potresti trovare più comodo iniziare il commit ( cc) e quindi usare git-commit-prev-message ( M-p) per scorrere i messaggi precedenti.

  • Se stai solo modificando l'ultimo commit, puoi modificare le modifiche temporanee al commit precedente con magit-commit-amend ( ca) o magit-commit-extend( ce). (Quest'ultimo riutilizza il messaggio di commit, ignorando il buffer COMMIT_EDITMSG.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.