Introduzione
Il ripristino di Git è un processo abbastanza simile all'annullamento del recente commit di Git di cui abbiamo parlato in uno dei tutorial precedenti. Tuttavia, in questo, tratteremo Git reset to Head in modo più approfondito. Controlleremo cosa fa il comando di revert e cosa è il ripristino misto. Continua a leggere e trova alcuni suggerimenti e trucchi su Git reset.
Reimpostare l'ultimo commit di Git su HEAD
Cosa fare quando si desidera ripristinare l'ultimo commit Git su HEAD, mantenere le modifiche apportate nella directory del repository, ma non si desidera mantenerle nell'indice? Ecco la tua risposta.
Se ti imbatti in situazioni come quella che abbiamo descritto sopra, devi usare il flag –mixed. Ecco un esempio.
Diciamo che abbiamo aggiunto una sorta di file con il nostro ultimo commit:
git log --oneline --graph
d445900 (HEAD -> master) Added a new file named "test_file"
61t6ll5 Second commit
4096r12 Initial repository commit
Ora eseguiamo il comando Git reset con il flag --mixed
:
git reset --mixed HEAD~1
Quello che ha fatto il comando sopra è il seguente. Ha rimosso l'ultimo commit, che in questo caso era l'aggiunta di file e lo ha rimosso dall'indice Git, ma il file è rimasto nella directory in cui ti trovi attualmente (che è la directory del tuo repository locale). Quindi flag --mixed
è in realtà una combinazione di opzioni di ripristino Git --soft
e --hard
. Ecco perché alla fine si chiama misto.
Come utilizzare l'opzione Git Revert per ripristinare
Il revert è leggermente diverso dal ripristino. La differenza principale è che reset imposta una nuova posizione per HEAD mentre revert in realtà ripristina l'intero commit specificato. Lascia che ti mostriamo un esempio di come funziona effettivamente:
git log --oneline --graph
d445900 (HEAD -> master) Added a new file named "test_file"
61t6ll5 Second commit
4096r12 Initial repository commit
Quindi, di nuovo, l'ultima cosa che abbiamo commesso è stata l'aggiunta di file. Eseguiamo ora il comando di revert:
git revert HEAD
Il tuo editor di testo predefinito si aprirà ora e l'output sarà simile a questo:
Revert “Added a new file named test_file”
This reverts commit 5e998t74du5h4z4f.
# Please enter the commit message for your changes. Lines starting
# with ‘#’ will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is ahead of ‘origin/master’ by 6 commits.
# (use “git push” to publish your loacl commits)
#
# Changes to be committed:
# deleted: test_file
#
Al termine, esci dall'editor di testo e verrà visualizzato un nuovo messaggio.
[master d445900] Revert "Added a new file named test_file"
1 file changed, 1 deletion(-)
delete mode 100644 test_file
Conclusione
Questo è tutto! Hai completato con successo l'azione di revert di Git su HEAD con l'opzione di ripristino.