Salva la giornata con Git e rimuovi dalla cronologia dei commit

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.

# Crea la cartella Repository e la sottocartella repo1
mkdir -p ~/Desktop/Repository/repo1
# Cambia la directory di lavoro in repo1
cd ~/Desktop/Repository/repo1

3. Esegui i seguenti comandi per inizializzare il tuo repository e creare due file di testo chiamati test1.txt e test2.txt.

# Inizializza il repository locale (creando una cartella nascosta .git)
git init
# Crea due file di testo
touch test_file1.txt test_file2.txt
Initializes the local repository

4. Ora, esegui il seguente comando per verificare lo stato del commit di Git.

git status

Dopo aver eseguito il comando, noterai che i commit sono non tracciati e non ancora committati, come mostrato di seguito.

Checking the status of Git commits on the Git terminal

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.

git add .

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.

git commit -m "Adding two new files test_file1.txt and text_file2.txt"
Committing Changes to Repository

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

git rm --cached test_file2.txt
Removing a Specific File from the Git Commit

8. Infine, eseguire nuovamente il comando git status qui sotto per verificare lo stato del repository.

git status

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.

Verifying the Removed Git Commit (test_file2.txt)

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.

touch test_file3.txt test_file4.txt

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).

git add .

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.

git commit -m "Adding two more files"
Committing Changes to the Repository

4. Ora, esegui il comando sottostante per verificare lo stato del tuo repository locale.

git status

Come puoi vedere di seguito, l’output mostra il messaggio “nothing to commit”, indicando che tutto è a posto nel repository.

Checking the Status of Git Commits

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.

git reset --soft HEAD~1

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.

git status

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.

Verifying the Recent Commits were Removed

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.

git commit -m "Hello, I am committing those two files again"

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.

Committing the Changes in the Local Repository

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.

git revert 0315b85

Di seguito, puoi vedere che due file che hai appena committato sono stati eliminati.

Reverting the Changes in the Local Repository

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.
mkdir myfolder && touch myfolder/l.txt

2. Successivamente, esegui i comandi git di seguito per aggiungere la nuova cartella (~/Desktop/Repository/repo1/myfolder) al tuo repository locale.

git add .
git commit -m "Adding folder"
Adding the new folder (folder) to the Local Repository

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

git rm -r myfolder/
Removing the New Folder (folder) in Git Commit

4. Infine, esegui il comando git status per verificare lo stato del repository e vedere se la cartella è stata rimossa.

git status

Di seguito, puoi vedere che l’intera cartella (myfolder) è stata eliminata con successo, insieme al file l.txt all’interno.

Verifying the Folder (myfolder) Has Been Removed Successfully

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/