La fusione dei rami in Git può talvolta essere un compito intimidatorio, ma il comando git merge
semplifica significativamente il processo. In questo tutorial, imparerai gli elementi essenziali della combinazione dei rami utilizzando git merge
, abbinato a GitHub, un importante strumento di gestione dei progetti.
Cominciamo questo viaggio nel mondo di Git e GitHub, concentrandoci sul potente comando git merge
.
Prerequisiti per Padroneggiare la Fusione in Git
Prima di addentrarti nelle complessità di git merge
, assicurati di avere il seguente setup:
- Git (Versione 2.25.1 usata in questo tutorial) – Scarica dal sito ufficiale di Git.
- A GitHub account – Sign up at GitHub.
- Una macchina Ubuntu (Ubuntu 20.04 è utilizzato qui, ma qualsiasi sistema operativo con Git sarà sufficiente).
Inizializzazione di un Progetto per la Fusione in Git
Per utilizzare efficacemente git merge
, è necessario prima avere un progetto Git. Creiamo un progetto di esempio per fare pratica.
1. Inizia creando una nuova directory chiamata ~/git-demo e naviga al suo interno:
2. Crea un file index.html nella directory ~/git-demo con il seguente contenuto. Questo file HTML di base mostra un messaggio su come iniziare con git merge
.
3. Inizializza un nuovo repository Git nella directory del tuo progetto:
Il comando
git init
viene utilizzato per convertire un progetto esistente e non versionato in un repository Git o per avviare un nuovo progetto con Git.

4. Conferma la creazione della cartella .git nella directory del tuo progetto. Questa cartella è dove Git tiene traccia delle modifiche:

5. Implementa il comando git add
per preparare le tue modifiche nel progetto. Staging del file index.html, lo stai preparando per il prossimo commit nel workflow di Git.
6. Utilizza git status
per confermare che il tuo file sia correttamente preparato. Questo comando fornisce uno snapshot dello stato attuale della tua directory di lavoro.

7. Successivamente, esegui il commit delle tue modifiche utilizzando git commit
. Questo comando salva le tue modifiche preparate nel repository locale, segnando un passaggio significativo nella tua cronologia delle versioni.

Imposta la tua identità Git con:
git config --global user.email "[email protected]"
egit config --global user.name "Your Name"
se stai usando Git per la prima volta.
8. Controlla la cronologia dei tuoi commit con git log
. Questo comando ti aiuta a tenere traccia delle modifiche ed è vitale quando ti prepari per un git merge
.

9. Conferma l’esistenza di rami nel tuo repository con git branch
. Questo passaggio è cruciale prima di eseguire un git merge
.
Nota: Il ramo predefinito è chiamato ‘main’ nelle versioni recenti di Git, sostituendo ‘master’.

Creazione di un ramo per il merge di Git
Con la tua configurazione iniziale di Git completa e il primo commit effettuato, è ora di creare un nuovo ramo. Questo ramo verrà utilizzato per dimostrare efficacemente il processo di git merge
.
1. Aggiorna il file index.html con un nuovo contenuto per mostrare le modifiche nel tuo ramo. Questa versione include campi di input utente, preparandoti per una dimostrazione di git merge
.
2. Verifica lo stato del tuo repository con git status
per visualizzare le modifiche in index.html. Dovrebbe indicare che il file è stato modificato e non è stato committato, pronto per i passaggi successivi nel processo di git merge
.

3. Crea un nuovo ramo chiamato “form” con git checkout -b form
. Questo comando non solo crea il nuovo ramo, ma passa anche il tuo ramo di lavoro a “form”, essenziale per implementare git merge
.

4. Conferma la creazione del nuovo ramo eseguendo git branch
. Dovresti ora vedere sia i rami “form” che “master”, con “form” come ramo attivo indicato da un asterisco (*).

5. Stage e committa le tue modifiche al ramo form. Questa azione assicura che il ramo form rifletta gli aggiornamenti recenti apportati al file index.html, preparando il terreno per un efficace git merge
.

Fusione del branch locale con Git Merge
Ora che hai branch distinti nel tuo repository GitHub, il passo successivo è unirli. Questa sezione si concentra sulla fusione dei branch in locale utilizzando il comando git merge
, un’operazione fondamentale di Git.
1. Per iniziare la fusione, passa al branch master
, che riceverà gli aggiornamenti dal branch form
:
2. Una volta sul branch master
, esegui git merge form
per combinare le modifiche dal branch form
in master
. Questo è un passaggio cruciale nel processo di git merge
.

git merge
.3. Conferma la fusione assicurandoti di essere sul branch master
e controllando che il contenuto di index.html sia stato aggiornato.

git merge
.Razionalizzazione con Git Squash
Lo squashing in Git è una tecnica utilizzata per pulire la cronologia dei commit. Quando hai più messaggi di commit non necessari individualmente, lo squashing ti permette di combinarli in un unico commit esaustivo. Questa pratica è particolarmente utile quando ci si prepara per una git merge
.
Esploriamo il processo di squashing apportando ulteriori modifiche al file index.html sul branch form
, e poi schiacciando queste modifiche.
1. Passa nuovamente al ramo form
per apportare ulteriori modifiche:
2. Modifica il index.html aggiungendo un’intestazione del modulo. Questo passaggio creerà una modifica che successivamente schiacceremo durante il merge:
3. Fai lo stage e fai il commit delle modifiche con un messaggio chiaro che descrive l’aggiornamento:

git merge
.4. Migliora il index.html nel ramo form
aggiungendo un nuovo campo di input. Questa modifica fa parte della preparazione per un efficace git merge
.
5. Fai lo stage e fai il commit di queste modifiche con un messaggio distinto, assicurandoti che ogni passaggio del tuo lavoro sia chiaramente documentato per il prossimo git merge
.

git merge
.6. Successivamente, inserisci un elemento di paragrafo sotto il modulo in index.html, modificando ulteriormente il file in preparazione per un git merge
.
7. Di nuovo, fai lo stage e fai il commit delle modifiche, utilizzando un messaggio che cattura l’essenza di questo aggiornamento, cruciale per il processo di git merge
.

git merge
.8. Utilizza git rebase
in modalità interattiva per visualizzare e modificare i tuoi commit recenti. Questo passaggio è essenziale nel processo di schiacciamento dei commit per un git merge
pulito.
9. Nella modalità interattiva, scegli di reword
il primo commit e squash
quelli successivi. Quest’azione consolida la tua cronologia dei commit, rendendo il tuo git merge
più pulito e organizzato.

git merge
.10. Dopo aver riformulato e salvato, aggiorna il messaggio di commit consolidato per riflettere le modifiche cumulative. Questo passaggio finalizza il processo di schiacciamento, preparandoti per un git merge
snello.

git merge
.Conferma il successo della tua operazione di schiacciamento, che è una parte integrante del processo di git merge
quando si gestiscono più messaggi di commit.

git squash
operation.Per schiacciare e fondere simultaneamente, utilizza git merge --squash
. Questa tecnica fonde e schiaccia il ramo form nel ramo master, combinando efficacemente i commit.
Eseguendo il comando git merge --squash
si combinano le modifiche dal ramo form
in master
mentre si condensano tutti i commit in uno solo. Questo approccio fa parte delle strategie efficaci di git merge
.

git merge
with squash option.Implementazione del Fast-Forward in Git Merge
Per una cronologia dei commit snella, il fast-forwarding è un metodo ideale, particolarmente per aggiornamenti minori o correzioni di bug. Consente di fondere i rami senza commit di merge aggiuntivi, mantenendo una cronologia pulita e lineare, fondamentale per processi di git merge
efficienti.
Il fast-forwarding avviene quando non c’è divergenza nel ramo base, tipicamente il master
, consentendo un’integrazione senza soluzione di continuità delle cronologie e degli aggiornamenti dei puntatori.
1. Cambia al ramo form
per iniziare il processo di fast-forward:
2. Crea e aggiorna un file JavaScript, come index.js, nel ramo form
, mettendo in stage e committando le modifiche:
3. Infine, fai il merge del ramo form
in master
utilizzando un approccio fast-forward. Questo passaggio allinea il ramo master con le ultime modifiche dal ramo form, creando un percorso di git merge
fluido e lineare.

Conclusioni
Questo tutorial ti ha guidato attraverso varie tecniche per combinare i rami usando git merge
. Dallo schiacciamento dei commit al fast-forwarding, questi metodi migliorano la tua capacità di gestire progetti in collaborazione su Git.
Ora, dotato di queste competenze, considera di contribuire a progetti collaborativi su GitHub, applicando le tue conoscenze di git merge
in scenari del mondo reale.