Merge a tre vie
Fa parte della sezione Controllo delle versioni del percorso Terminal di Coddy. Lezione 36 di 58.
Se entrambi i rami sono progrediti in modo indipendente, Git non può semplicemente eseguire un avanzamento rapido. Esegue invece un merge a tre vie: esamina l’antenato comune e le punte dei due rami, quindi produce un nuovo commit che li combina.
Questo nuovo commit è il commit di merge. Ha due genitori, uno per ciascun ramo:
git switch main
git merge feature -m "Merge feature"Il flag -m fornisce direttamente il messaggio del commit di merge, così Git non apre un editor.
La maggior parte delle volte Git può combinare automaticamente le modifiche di entrambi i rami, purché riguardino parti diverse dei file. I conflitti si verificano solo quando entrambi i rami hanno modificato le stesse righe; questo è l’argomento della prossima lezione.
Sfida
MedioInizi in una cartella nuova con top.txt (contenuto: a) e bottom.txt (contenuto: b).
Inizializza il repository, crea un primo commit, poi:
- Crea il branch
featuree aggiungi la rigaaddedatop.txt; crea un commit. - Passa a
maine aggiungi la rigaaddedabottom.txt; crea un commit. - Unisci
featureamaincon il messaggioMerge feature.
Stampa il numero di commit raggiungibili da HEAD usando git rev-list --count HEAD. Il numero previsto è 4 (iniziale + feature + main + merge).
Provalo tu
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Controllo delle versioni
4Esaminare le modifiche
Git DiffDifferenze delle modifiche in stagingGit ShowRiepilogo: lavoro da detective2Per iniziare
Inizializzare un repositoryLa cartella .gitConfigura la tua identitàStato di GitRiepilogo - Primo repository5Ignorare i file
Perché ignorare i filePattern di .gitignoreVerificare le regole di ignoramentoRiepilogo - Repository pulito8Unione
Che cos’è un mergeMerge fast-forwardMerge a tre vieConflitti di mergeRisolvere un conflittoRipasso - Maestro del merge11Progetto con un ramo di funzionalità
Panoramica del progettoInizializzare main3Tracciare le modifiche
L'area di stagingGit AddGit CommitModificare un file tracciatoGit LogRiepilogo: i primi commit6Progetto di un sito di ricette
Panoramica del progettoInizializzare e ignorareEsercitati da solo: Playground Terminal