Annullamento di un Commit Specifico
git revert
Per annullare uno specifico commit, utilizzare il comando git revert.
Questo comando crea un nuovo commit che annulla le modifiche introdotte dal commit specificato.
Sintassi di base:
git revert <commit-hash>
Invece di usare HEAD (che si riferisce all'ultimo commit), specificare l'hash del commit (ID del commit) che si desidera annullare, sostituendo <commit-hash> con il valore effettivo dell'hash.
Approfondimento sugli Hash
Ogni commit possiede un ID univoco — una stringa esadecimale di 40 caratteri composta da cifre (0–9) e lettere (a–f). Questo identificatore è chiamato hash. Ora, visualizzare l'ultimo commit:
Ecco il suo hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Avrai un hash diverso per questo commit per il motivo spiegato di seguito.
L'hash del commit viene calcolato utilizzando l'algoritmo SHA-1 sulla base delle seguenti informazioni:
- Messaggio del commit;
- Data;
- Autore;
- Snapshot dell'albero di lavoro;
- Hash del commit genitore (o dei commit genitori quando ce n'è più di uno).
Se il commit è il primo nel repository, allora l'hash del commit genitore apparentemente non viene calcolato.
Poiché tutte queste informazioni sul commit vengono utilizzate per calcolare il suo hash, l'utilizzo degli hash come ID dei commit garantisce la coerenza del repository. Inoltre, la probabilità che due commit diversi abbiano lo stesso hash (la probabilità di collisione) è estremamente bassa, quindi è molto improbabile che accada per caso.
Fondamentalmente, se qualcosa viene modificato nel commit, anche il suo hash cambierà. Questo significa che, nel caso in cui i dati vengano corrotti per qualsiasi motivo, Git può utilizzare l'hash per identificarlo.
Quando si modifica un commit, l'ID del commit cambia, motivo per cui è preferibile non utilizzare il comando git commit --amend quando si lavora con repository remoti.
Esempio di workflow
Prima di decidere quale commit annullare, visualizzare i quattro commit più recenti:
Esiste un commit in cui è stato aggiunto il file recipe.txt.
Revert di questo commit per crearne uno nuovo che annulli tali modifiche ed elimini effettivamente il file.
In questo esempio, l'hash del commit è:
043b634d76a7a7744757350512b6367417c29e0
Il tuo hash del commit sarà diverso. Ora esegui il revert di questo commit:
Sostituisci questo hash con il tuo hash.
Ancora una volta, l'editor di testo predefinito si apre con il messaggio di commit predefinito per il revert. Lasciare il messaggio invariato.
Successivamente, chiudere correttamente l'editor di testo e visualizzare le modifiche apportate nell'ultimo commit:
7 eliminazioni effettuate, ovvero tutte e sette le righe del file sono state rimosse. Ora verificare che il file sia stato effettivamente eliminato elencando tutti i file e le directory non nascosti nella directory del progetto:
Il file recipe.txt è stato eliminato con successo.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.57
Annullamento di un Commit Specifico
Scorri per mostrare il menu
git revert
Per annullare uno specifico commit, utilizzare il comando git revert.
Questo comando crea un nuovo commit che annulla le modifiche introdotte dal commit specificato.
Sintassi di base:
git revert <commit-hash>
Invece di usare HEAD (che si riferisce all'ultimo commit), specificare l'hash del commit (ID del commit) che si desidera annullare, sostituendo <commit-hash> con il valore effettivo dell'hash.
Approfondimento sugli Hash
Ogni commit possiede un ID univoco — una stringa esadecimale di 40 caratteri composta da cifre (0–9) e lettere (a–f). Questo identificatore è chiamato hash. Ora, visualizzare l'ultimo commit:
Ecco il suo hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Avrai un hash diverso per questo commit per il motivo spiegato di seguito.
L'hash del commit viene calcolato utilizzando l'algoritmo SHA-1 sulla base delle seguenti informazioni:
- Messaggio del commit;
- Data;
- Autore;
- Snapshot dell'albero di lavoro;
- Hash del commit genitore (o dei commit genitori quando ce n'è più di uno).
Se il commit è il primo nel repository, allora l'hash del commit genitore apparentemente non viene calcolato.
Poiché tutte queste informazioni sul commit vengono utilizzate per calcolare il suo hash, l'utilizzo degli hash come ID dei commit garantisce la coerenza del repository. Inoltre, la probabilità che due commit diversi abbiano lo stesso hash (la probabilità di collisione) è estremamente bassa, quindi è molto improbabile che accada per caso.
Fondamentalmente, se qualcosa viene modificato nel commit, anche il suo hash cambierà. Questo significa che, nel caso in cui i dati vengano corrotti per qualsiasi motivo, Git può utilizzare l'hash per identificarlo.
Quando si modifica un commit, l'ID del commit cambia, motivo per cui è preferibile non utilizzare il comando git commit --amend quando si lavora con repository remoti.
Esempio di workflow
Prima di decidere quale commit annullare, visualizzare i quattro commit più recenti:
Esiste un commit in cui è stato aggiunto il file recipe.txt.
Revert di questo commit per crearne uno nuovo che annulli tali modifiche ed elimini effettivamente il file.
In questo esempio, l'hash del commit è:
043b634d76a7a7744757350512b6367417c29e0
Il tuo hash del commit sarà diverso. Ora esegui il revert di questo commit:
Sostituisci questo hash con il tuo hash.
Ancora una volta, l'editor di testo predefinito si apre con il messaggio di commit predefinito per il revert. Lasciare il messaggio invariato.
Successivamente, chiudere correttamente l'editor di testo e visualizzare le modifiche apportate nell'ultimo commit:
7 eliminazioni effettuate, ovvero tutte e sette le righe del file sono state rimosse. Ora verificare che il file sia stato effettivamente eliminato elencando tutti i file e le directory non nascosti nella directory del progetto:
Il file recipe.txt è stato eliminato con successo.
Grazie per i tuoi commenti!