Articolo originale: Git Checkout Explained: How to Checkout, Change, or Switch a Branch in Git
Il comando git checkout
consente di passare da un branch (o ramo) all'altro o di ripristinare i file dell'albero di lavoro. Esistono diverse opzioni per questo comando che non verranno trattate in questo articolo, ma è possibile consultarle tutte nella documentazione di Git.
Effettuare il checkout di uno specifico commit
Per eseguire il checkout di un commit specifico, esegui il comando:
git checkout id-commit-specifico
Possiamo recuperare l'id di uno specifico commit eseguendo:
git log
Effettuare il checkout di un branch esistente
Per eseguire il checkout di un branch esistente, esegui il comando:
git checkout NOME-BRANCH
In genere, Git non consente di eseguire il checkout di un altro branch a meno che la directory di lavoro non sia pulita, perché si perderebbero tutte le modifiche della directory di lavoro di cui non è stato ancora effettuato un commit. Ci sono tre opzioni per gestire tali modifiche: 1) eliminarle, 2) effettuare un commit che le include o 3) spostarle nell'area di stash.
Effettuare il checkout di un nuovo branch
Per creare e contemporaneamente spostarsi nel nuovo branch con un singolo comando, è possibile eseguire:
git checkout -b NOME-NUOVO-BRANCH
In questo modo si passerà automaticamente al nuovo branch, dopo averlo creato.
Effettuare il checkout di un nuovo branch o ripristinare un branch
Il seguente comando è molto simile al comando che permette di creare e contemporaneamente spostarsi in nuovo branch, ma utilizza l'opzione -B
(in questo caso la B è maiuscola) e un parametro opzionale START-POINT
:
git checkout -B NOME-BRANCH START-POINT
Se il branch NOME-BRANCH
non esiste, allora Git lo creerà e lo farà partire dal punto indicato dal parametro START-POINT
. Se, invece, il branch NOME-BRANCH
esiste, allora Git lo ripristinerà al punto del branch indicato dal parametro START-POINT
. L'esecuzione di quest'ultimo comando è equivalente all'esecuzione di git branch
con l'opzione -f
.
Forzare un Checkout
È possibile passare l'opzione -f
o --force
al comando git checkout
per forzare Git a cambiare branch, anche in presenza di modifiche della directory di lavoro di cui non è stato ancora effettuato un commit (in altre parole, l'indice dell'albero di lavoro è diverso da HEAD
). In pratica, questo comando può essere usato per eliminare le modifiche locali.
Eseguendo il comando seguente, Git ignorerà le modifiche esistenti e si sposterà di branch:
git checkout -f NOME-BRANCH
# Alternativa
git checkout --force NOME-BRANCH
Annullare le modifiche nella directory di lavoro
È possibile usare il comando git checkout
per annullare le modifiche apportate a un file nella directory di lavoro. In questo modo il file tornerà alla versione presente nell'HEAD
:
git checkout -- NOME-FILE