Cosa sono i Branch?
I rami (detti branch) vengono utilizzati in GitHub per l’implementazione di funzionalità tra loro isolate, cioè sviluppate in modo indipendente l’una dall’altra ma a partire dalla medesima radice. Strutturalmente il ramo predefinito (ovvero quello di partenza) di un progetto è il Main e che viene generato quando si crea un repository, come visto nel precedente articolo; sarà poi possibile creare nuovi rami dedicati a funzionalità differenti per poi, al termine dell’implementazione inserirle nel Main, tramite procedure di merging che vedremo di seguito.
Come utilizzare i branch su GitHub Desktop
Creazione Nuovo Branch
Apriamo l’applicazione GitHub e nella barra in alto selezioniamo la voce New Branch
![github-come-gestire-i-branch](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch.png)
Inseriamo il nome del nuovo Branch e confermiamo
![github-come-gestire-i-branch-2](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-2.png)
Una volta creato in locale dobbiamo condividere la modifica con il cloud di GitHub, basterà cliccare su Publish Branch
![github-come-gestire-i-branch-3](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-3.png)
Commit sul nuovo Branch
Andiamo ad aggiungere un nuovo file (Test_NewBranch02.json) nel nostro repository e lanciamo la commit sul nuovo branch, selezioniamo il Branch02_Test nella barra in alto, inseriamo titolo e descrizione della commit e procediamo
![github-come-gestire-i-branch-5](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-5.png)
Come abbiamo visto per il Main anche nel Branch dobbiamo mandare le modifiche sul cloud github cliccando su Push Origin
![github-come-gestire-i-branch-6](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-6.png)
Effettuare il merge tra Main e Branch
Github mette a disposizione 3 scelte differenti per il merge tra Main e Branch, vediamo nel dettaglio le differenze:
- Merge commit: conserverà la cronologia di tutti i commit del Branch e li sposterà nel ramo principale, aggiungerà un commit fittizio extra.
- Rebase and Merge: accoda la cronologia di tutti i commit del branch nella parte anteriore del Main, NON aggiungerà un commit fittizio extra.
- Squash and Merge: raggrupperà tutti i commit del branch in un commit e lo aggiungerà nella parte anteriore del ramo Main, aggiungerà un commit fittizio extra.
Il tutto risulterà più facile da capire con questi schemi:
![github-come-gestire-i-branch-7](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-7.png)
Vediamo ora cosa succede nei 3 casi differenti appena elencati:
![github-come-gestire-i-branch-8](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-8.png)
Una volta chiarite le tipologie di merge andiamo ad eseguire il classico Merge Commit, clicchiamo su Create Pull Request
![github-come-gestire-i-branch-9](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-9.png)
Veniamo ora rediretti sul sito di GitHub, inseriamo i commenti da storicizzare e confermiamo di voler creare una Pull Request
![github-come-gestire-i-branch-10](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-10.png)
Selezioniamo il tipo di merge, nel nostro caso “Merge Commit”
![github-come-gestire-i-branch-11](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-11.png)
![github-come-gestire-i-branch](https://internautablog.it/wp-content/uploads/2021/05/github-come-gestire-i-branch-13.png)
Al termine della procedura guidata vi apparirà la conferma della buona riuscita dell’operazione come nell’immagine qui sopra postata.