Ti sei mai imbattuto in errori o problemi con i commit di Git durante il lavoro con Git? Forse è stata salvata una segreto errato o dati sensibili. Fortunatamente, puoi elaborare i tuoi file con Git e rimuoverli dai commit e correggere la cronologia.
Se hai effettuato diversi commit o clonato un repository con una cronologia di commit già esistente, probabilmente vorrai guardare indietro e vedere quali commit sono stati effettuati. In questo tutorial imparerai come rimuovere una voce dalla tua cronologia di Git.
Continua a leggere e salva la giornata con Git!
Prerequisiti
Questo tutorial comprende istruzioni passo passo. Se desideri seguire, assicurati di avere quanto segue:
- A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
- Git Bash – Questo tutorial utilizza Git Bash 2.36.
Rimuovere un file dal commit di Git
Quando lavori su Git come team, effettui centinaia di commit al giorno. Di conseguenza, è molto probabile che tu debba annullare un commit specifico, ad esempio a causa di un file errato o di più file. Questa esigenza è solitamente causata da un cambiamento nel codice o nella configurazione e diventa un problema.
Per risolvere questo problema, dovrai rimuovere il file o i file dal commit di Git eseguendo comandi Git. Utilizzerai uno degli strumenti popolari per rimuovere un singolo file dal commit di Git, lo strumento Git Bash.
1. Apri lo strumento Git Bash sul tuo computer Windows.
2. Successivamente, esegui il seguente comando per creare una cartella di repository e passare a quella cartella. Questi comandi non forniranno output sul terminale. Assicurati però di sostituire ~/Desktop/Repository/repo1 con il percorso e il nome della cartella che preferisci.
3. Esegui i seguenti comandi per inizializzare il tuo repository e creare due file di testo chiamati test1.txt e test2.txt.

4. Ora, esegui il seguente comando per verificare lo stato del commit di Git.
Dopo aver eseguito il comando, noterai che i commit sono non tracciati e non ancora committati, come mostrato di seguito.

5. Esegui il comando git add di seguito per aggiungere i due file di testo creati al passaggio tre (test_file1.txt e test_file2.txt) al tuo repository locale.
Questo comando non fornirà un output, ma aggiungerà i file senza caricarli nel repository remoto.
6. Successivamente, esegui il comando git commit di seguito in modo che Git tenga traccia dei progressi e delle modifiche che hai apportato nel repository locale.

7. Dopo aver committato, eseguire il seguente comando per rimuovere un file specifico (test_file2.txt) dal commit di Git.

8. Infine, eseguire nuovamente il comando git status qui sotto per verificare lo stato del repository.
Come puoi vedere qui sotto, il file è stato rimosso dall’area di staging (il commit di Git) e mostra il file (test_file2.txt) sotto i file non tracciati.

Rimozione di tutti i file committati di recente
Hai appena imparato a rimuovere un file specifico dal commit di Git. Ma tipicamente, dovrai eliminare più file e Git è all’altezza del compito con il comando git reset. Il comando git reset è uno strumento complesso ma, allo stesso tempo, versatile per annullare le modifiche nel repository.
Per vedere come funziona il reset di git, committerai un paio di file, quindi reimposterai le modifiche per rimuovere i file committati di recente memorizzati nel commit di Git:
1. Crea due nuovi file di testo denominati test_file3.txt e test_file4.txt nella cartella ~/Desktop/Repository/repo1.
2. Successivamente, esegui il comando git add qui sotto, che non fornisce un output ma aggiunge i nuovi file di testo al tuo repository locale (~/Desktop/Repository/repo1).
3. Esegui il comando git commit qui sotto per committare i file in modo che Git tenga traccia del progresso e delle modifiche apportate nel repository.

4. Ora, esegui il comando sottostante per verificare lo stato del tuo repository locale.
Come puoi vedere di seguito, l’output mostra il messaggio “nothing to commit”, indicando che tutto è a posto nel repository.

5. Successivamente, esegui il comando git reset qui sotto per annullare i commit effettuati di recente nello step tre. Questo comando non fornisce output ma rimuove i file test_file3.txt e test_file4.txt.
Puoi anche utilizzare git reset –soft HEAD^ per rimuovere tutti i file che sono stati committati fino a ora.
6. Successivamente, esegui nuovamente il comando git status qui sotto per verificare lo stato del repository.
Di seguito, l’output mostra i file test_file3.txt e test_file4.txt che devono essere committati. Questo output indica i file da rimuovere dal commit di Git.

Rimozione di Commits Specifici dalla Storia di Git
La rimozione di tutti i file committati funziona alla grande se desideri iniziare da zero. Ma cosa fare se devi rimuovere solo un commit particolare? Il comando git revert farà il trucco fintanto che conosci l’ID del commit.
Nell’ultimo passaggio della sezione “Rimozione di Tutti i File Committati di Recente”, hai notato che i commit non sono stati committati ma modificati. Ora committerai le modifiche per vedere il comando git revert
in azione.
Esegui il comando git commit
qui sotto per committare le modifiche recenti sul tuo repository locale.
Dopo aver eseguito il comando, noterai che entrambi i file di testo sono stati nuovamente committati e l’ID del commit è 0315b85, come mostrato di seguito.

Ora, esegui il comando git revert
di seguito per annullare il commit eseguito nel passaggio precedente. Assicurati di sostituire 0315b85
con l’ID del tuo commit.
Di seguito, puoi vedere che due file che hai appena committato sono stati eliminati.

Eliminazione di una directory dalla cronologia dei commit di Git
A questo punto, già sai come eliminare un file committato, ma come si fa con una directory? Eliminare una directory da un commit di Git è simile all’eliminazione di file.
1. Esegui i comandi seguenti, che non forniscono output ma eseguono le seguenti operazioni:
- Crea una cartella chiamata
myfolder
all’interno del tuo repository locale (~/Desktop/Repository/repo1).
- Crea un file chiamato l.txt all’interno della cartella ~/Desktop/Repository/repo1/myfolder.
2. Successivamente, esegui i comandi git di seguito per aggiungere la nuova cartella (~/Desktop/Repository/repo1/myfolder) al tuo repository locale.

3. Esegui il comando git rm seguente per rimuovere la cartella (myfolder) che hai committato nel secondo passaggio.

4. Infine, esegui il comando git status per verificare lo stato del repository e vedere se la cartella è stata rimossa.
Di seguito, puoi vedere che l’intera cartella (myfolder) è stata eliminata con successo, insieme al file l.txt all’interno.

Conclusione
In questo tutorial, hai imparato a lavorare con i commit di Git, come rimuovere un commit specifico, un file o più file. Hai anche toccato la cancellazione di un’intera cartella all’interno del repository locale e il commit delle modifiche.
A questo punto, puoi tranquillamente effettuare commit sul tuo repository e rimuovere i commit che ritieni non necessari senza combinare pasticci.
Con quello che hai imparato in questo tutorial, quale metodo pensi possa essere eccellente per lavorare con i commit per il tuo team?
Source:
https://adamtheautomator.com/git-and-remove-from-commit/