logo

Come annullare l'ultimo commit con Git

In qualità di ingegnere del software o sviluppatore web, potremmo aver bisogno di inviare molti commit al nostro repository Git.

Tuttavia, ci sono altri casi in cui vogliamo impegnare i file che non verranno inviati al nostro repository Git. Prima di emettere qualsiasi commit, a volte potremmo voler implementare alcune modifiche aggiuntive.

Di conseguenza, dobbiamo annullare l'ultimo commit tramite il nostro repository Git. Vedremo come annullare l'ultimo commit in questo argomento.

Annulla l'ultimo Git Commit insieme a un ripristino

Possiamo facilmente annullare l'ultimo commit git eseguendo il comando, ovvero 'git reset' insieme a un'opzione, ovvero '-morbido' che proteggerà tutte le modifiche apportate ai nostri file. Dobbiamo descrivere il commit da annullare che è 'HEAD~1'.

L'ultimo commit di Git verrà eliminato dal nostro repository Git.

 $ git reset --soft HEAD~1 

In questa notazione,

'TESTA~1': Significa che desideriamo reimpostare questo HEAD su un singolo commit prima all'interno della cronologia del log.

thread.distruggi
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Quale sarà l'effetto del comando precedente?

Il comando, cioè 'git reset' può essere visto come un comando, cioè l'opposto di 'git aggiungi' , essenzialmente inserendo file nell'indice Git.

Se si descrive l'opzione di '-morbido' , Git non modificherà affatto i file all'interno dell'indice o della directory di esecuzione.

Ad esempio, abbiamo incluso due file nel nostro recente commit, anche se desideriamo implementare alcune modifiche in questo file.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

Di conseguenza, faremo domanda 'git reset' insieme all'opzione di '-morbido' per annullare l'ultimo commit e implementare anche alcune modifiche aggiuntive.

 $ git reset --soft HEAD~1 $ git status 

Sul maestro di filiale

Il nostro ramo è master/origine avanti rispetto al commit 1 (applica 'git push' per pubblicare i nostri commit locali).

Modifiche da apportare:

 (apply 'git restore --staged …' to unstage) 

nuovo file: file1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Come possiamo vedere, il file è ancora nell'indice annullando l'ultimo commit (modifiche da salvare) anche se il commit è stato cancellato.

Abbiamo eseguito con successo l'ultimo commit sul nostro repository.

elenca come array

Commit Git con ripristino hardware

Possiamo considerare nella sezione precedente che possiamo facilmente annulla l'ultimo commit e conserva le modifiche fatto su qualsiasi file all'interno dell'indice. Ma in alcune situazioni, desideriamo semplicemente rimuovere le modifiche e i commit apportati a qualsiasi file.

È un obiettivo di un'opzione, cioè '-difficile' .

Per annullare l'ultimo commit e rimuovere ogni modifica all'interno dell'indice e della directory, esegui un comando, ad esempio, 'git reset' insieme all'opzione, ovvero '-difficile' e descrivi un commit prima del comando HEAD ('TESTA~1') .

 $ git reset --hard HEAD~1 

Ogni commit e modifica verrà rimossa dall'indice e dalla directory dopo aver utilizzato il file '--difficile' comando. Quindi dovremmo stare attenti.

Ad esempio, abbiamo eseguito il commit di qualsiasi nuovo file denominato 'file1' nel nostro repository Git.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Ora supponiamo di voler annullare l'ultimo commit e rimuovere ogni modifica.

elenco dei caratteri in gimp
 $ git reset --hard HEAD~1 

Ora HEAD è su 90f8bb1 Secondo commit

Ora controlliamo lo stato del nostro repository git.

 $ git status 

Sul maestro di filiale

Il nostro ramo è contemporaneo a master/origin (applica il comando 'git push' per pubblicare i nostri commit locali).

sostituisci tutto nella stringa java

Ora non c'è più nulla da impegnare e l'albero di lavoro è pulito.

Commit Git di ripristino misto

Mantieni la modifica all'interno della nostra directory di lavoro, tuttavia, NON all'interno dell'indice. Dobbiamo applicare il comando, ad es ., 'git reset' insieme all'opzione, ovvero '-misto' . Dopo questo comando, dobbiamo aggiungere 'HEAD~1' semplicemente all'ultimo commit.

 $ git reset --mixed HEAD~1 

Ad esempio, abbiamo incluso qualsiasi file denominato 'file1' all'interno di qualsiasi commit che richiediamo di annullare.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Semplicemente, eseguiamo il comando, ovvero 'git reset' insieme all'opzione, ovvero '-misto' per annullare l'ultimo commit.

Di conseguenza, il '-misto' il comando è a 'mescolare' tra l'hard e il soft reset, da qui il nome.

Sul maestro di filiale

Il nostro ramo è master/origine avanti rispetto al commit 1 (applica 'git push' per pubblicare i nostri commit locali).

File non tracciati: (applica 'git add …' per aggiungere all'interno ciò che verrà committato)

 file1 

Non è incluso nulla per il commit, ma sono presenti i file non tracciati (applica 'git track' per il tracciamento).

Quindi, abbiamo rilevato un'altra pratica per annullare l'ultimo commit preservando le modifiche apportate ai file.

sottostringa Java

Annulla l'ultimo commit e ripristina

Applicare il comando, ovvero 'git ripristina' e descrivere un commit da ripristinare, ovvero 'TESTA' al commit della cronologia per ripristinare l'ultimo commit Git.

 $ git revert HEAD 

Il comando 'git revert' è diverso rispetto al comando 'git reset' perché può registrare qualsiasi nuovo commit insieme ad alcune modifiche definite dalla degenerazione dell'ultimo commit.

Possiamo descrivere 'HEAD~1' con il comando 'git reset' perché questo comando di reset imposterà qualsiasi nuova posizione HEAD degenerando il commit descritto.

Di conseguenza, applicheremo nuovamente le modifiche ad alcuni file per ripristinarli e impegnarci a non eseguirli. Abbiamo effettuato il commit di qualsiasi nuovo file per il nostro repository di Git ma desideriamo degenerare questo commit.

 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Se si esegue il comando 'git revert', Git aprirà il nostro editor di testo per confermare automaticamente le modifiche.

Come annullare l'ultimo commit con Git

Un nuovo messaggio verrà visualizzato insieme a un nuovo hash di commit quando avremo finito di eseguire un messaggio di commit.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Se dobbiamo controllare nuovamente la nostra cronologia di Git, possiamo notare un nuovo commit aggiunto per annullare l'ultimo commit tramite il nostro repository.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit