Articolo originale: https://www.freecodecamp.org/news/git-checkout-remote-branch-tutorial/

Git è uno strumento di controllo versione che permettere di mantenere e vedere diverse versioni delle tue applicazioni. Quando un nuovo aggiornamento fa smettere di funzionare la tua app, Git ti permettere di ripristinare quei cambiamenti e tornare alla versione precedente.

In aggiunta alla gestione delle versioni, Git ti permette di lavoare in più ambienti allo stesso tempo. Più ambienti in questo contensto significa branch.

Perché ti servono i branch

Quando stai lavorando con git, avrai un ambiente (branch) principale (main). Questo branch tiene il codice sorgente che viene distribuito quando la tua app è pronta per la produzione.

Quando vuoi aggiornare la tua app, puoi anche aggiungere più commit (cambiamenti) a questo branch. Per piccoli cambiamenti, questo potrebbe non avere molto peso, ma per grandi cambiamenti, questo non è il metodo ideale. Ed è per questo che gli altri branch esistono.

Per creare e usare un nuov branch, usa i seguenti comandi nel tuo terminale nella cartella del progetto:

# create a new branch
git branch branch-name
# change environment to the new branch
git checkout branch-name

In questo nuovo branch, puoi creare i nuovi cambiamenti. Poi, quando hai finito, puoi unirli al branch principale.

Un altro beneficio dei branch è che permettono a più sviluppatori di lavorare simultaneamente sullo stesso progetto. Se hai più sviluppatori che lavorano sullo stesso branch principale, può essere un disastro. Ci sono troppi cambiamenti tra il codice dei vari sviluppatori, e questo di solito finisce in conflitti di unione.

Con Git, puoi creare un branch diverso (un altro ambiente) e fare cambiamenti lì, mentre altro lavoro viene fatto in altri branch.

Cosa significa Git Checkout di branch remoto ?

Quando inizi un progetto su Git, hai due ambienti: il branch principale in locale (che esiste sul tuo computer), e il branch principale remoto (che esiste in una piattaforma che supporta Git, come GitHub).

Puoi fare push dei tuoi cambiamenti dal branch principale locale al branch principale remoto e anche prelevare cambiamenti dal branch principale remoto.

Quando crei un branch locale, esiste solo localmente fino a che non ne fai il push a GitHub dove diventa un branch remoto. Come è mostrato nel seguente esempio:

# create a new branch
git branch new-branch
# change environment to the new branch
git checkout new-branch
# create a change
touch new-file.js
# commit the change
git add .
git commit -m "add new file"
# push to a new branch
git push --set-upstream origin new-branch

Dall'esempio sopra origin new-branch diventa il branch remoto. Come potresti avere notato, abbiamo creato un nuovo branch e fatto il commit di un cambiamento prima di fare il push al nuovo branch remoto.

Ma e se il branch remoto già esiste e vogliamo prelevare il branch e tutti i suoi cambiamenti al nostro ambiente locale?

Qui è dove usiamo "Git Checkout Remote Branch".

Come usare Git Checkout di branch remoto

Diciamo che c'è un branch remoto creato da un altro sviluppatore, e vuoi fare il pull di quel branch. Ecco come faresti:

1. Fai il fetch di tutti i branch remoti

git fetch origin

Questo recupera tutti i branch remoti dal repository. origin è il nome remoto che stai targettando. Se tu avessi un nome remoto di upstream potresti usare git fetch upstream.

2. Elenca i branch disponibili di cui puoi fare checkout

Per vedere tutti i branch di cui puoi fare checkout, esegui il seguente comando:

git branch -a

L'output di questo comando è la lista dei branch disponibili di cui puoi fare checkout. Troverai i branch remoti con il prefisso remotes/origin.

3. Fai il pull dei cambiamenti da un branch remoto

Nota che non puoi fare cambiamenti direttamente su un branch remoto. Quindi, devi fare una copia di quel branch. Diciamo che vuoi copiare il branch remoto fix-failing-tests, ecco come lo faresti:

git checkout -b fix-failing-tests origin/fix-failing-tests

Cosa fa questo:

  • crea un nuovo branch chiamato fix-failing-tests (grazie all'opzione -b)
  • fa il checkout di quel branch
  • fa il pull dei cambiamenti da origin/fix-failing-tests a quel branch

E ora hai una copia di quel branch remoto. Puoi anche fare il push di commit al branch remoto. Per esempio, puoi fare il push di un nuovo commit in questo modo:

touch new-file.js
git add .
git commit -m "add new file"
git push

Questo farà il push dei cambiamenti nel commit al branch origin/fix-failing-tests. Se hai notato, non abbiamo specificato dove stiamo facendo il push dei cambiamenti (tipo git push origin fix-failing-tests). Git ha impostato automaticamente che il branch locale tenga traccia del branch remoto.

Conclusioni

I branch in Git rendono molto facile collaborare durante lo sviluppo di una app.

Con i branch, sviluppatori diversi possono lavorare facilmente su parti diverse dell'applicazione simultaneamente.

Facendo il checkout di branch remoti, la collaborazione diventa più liscia visto che gli sviluppatori possono pure copiare branch remoti localmente nel loro sistema, fare modifiche e poi fare push ai branch remoti.