Mastering Git
Git offre enormi potenzialità sulla gestione del codice, che occorre però padroneggiare. Troppo spesso infatti, questo strumento non viene utilizzato in tutte le sue funzioni dai team di sviluppo, perdendosi così un grande vantaggio. Il corso Mastering Git vuole aiutarti a conoscere i suoi meccanismi interni per poter adottare flussi di sviluppo impensabili con qualsiasi altro source control.
Cosa imparerai
Il funzionamento interno di GIT
I principali comandi, ma anche i più avanzati
Implementare il flusso di sviluppo più adatto a te
Lezioni del corso
-
Struttura, contenuti e prerequisiti del corso
-
Struttura del corso
Organizzazione interna del corso
-
Contenuti del corso
Gli argomenti trattati nel corso
-
Prerequisiti del corso
Cosa devo sapere per poter seguire questo corso
-
-
Metafore base di utilizzo dello strumento, poniamo le basi per conoscere Git
-
Installare e configurare Git
Installare e configurare Git in ambiente Microsoft Windows
-
Demo: installare e configurare Git in Windows
Demo installazione Git su Windows con Powershell
-
Cosa non è Git e database interno
Analizziamo come Git salva gli oggetti nel suo database interno
-
Demo: salvare oggetti
Inizializzazione e salvataggio a basso livello in Git
-
Demo: dissezione del blob
In questa demo analizziamo come è fatto un blob internamente
-
Recap struttura binaria interna
Ricapitoliamo quanto visto nelle demo sulla struttura interna
-
La metafora dello snapshot
Vediamo come la metafora dello snapshot possa aiutarci a comprendere meglio il funzionamento di Git
-
Demo: il nostro primo commit
Analizziamo quello che succede quando utilizziamo il comando commit di Git
-
Demo: dissezioniamo il nostro primo commit
Vediamo cosa è successo dietro le quinte a seguito del nostro primo commit
-
Demo: un progetto reale
Vediamo come preparare un progetto reale all'utilizzo di Git
-
Riepilogo del modulo
Facciamo il punto di quello che abbiamo visto in questo secondo modulo
-
-
-
Introduzione al concetto di Refs
Introduciamo il concetto di Refs che è alla base del funzionamento del branching in Git
-
Demo: Puntatore HEAD e le basi del comando checkout
Torniamo nel codice e analizziamo come funziona il comando checkout
-
References
Inoltriamoci nel concetto di references, fondamentale per capire che cos'é una branch
-
Demo: la nostra seconda branch
Creiamo la nostra seconda branch a partire da main o master
-
Demo: visualizzazione grafica con GitViz e Git Visualizer
Vediamo insieme due tool di visualizzazione grafica per Git molti utili a livello didattico
-
Demo: capiamo meglio cosa significa detached HEAD
In questa demo andremo a capire meglio cosa significa detached HEAD
-
Demo: analisi di commit orfani, check del file system e recupero commit persi
Scopriamo insieme come recuperare i commit "persi"!
-
Il comando reflog
Scopriamo insieme il comando git reflog e la sua utilità nel trovare commit orfani
-
Demo: reflog
Vediamo il comando git reflog in azione
-
Sviluppo parallelo tramite uso di branch
Vediamo come le branch ci permettano di parallelizzare lo sviluppo del nostro codice
-
Demo: bugfix su branch parallele
Vediamo come possiamo sfruttare il concetto di branch per eseguire un bug fix in produzione mentre stiamo sviluppando una feature
-
Giochiamo con le branch manipolando direttamente il database interno
Per comprendere fino in fondo come funzionano le branch, proviamo a manipolare direttamente il database interno di Git
-
Reintegro nella branch principale: fast forward
Vediamo come riportare sulla branch principale una modifica fatta su una branch secondaria
-
Demo: reintegro nella branch principale con fast forward
Vediamo adesso come, nella pratica, possiamo reintegrare una branch con il fast forward
-
Merge
Vediamo come mergiare una feature sviluppata su una apposita branch
-
Demo: merge
In questa demo vediamo come in pratica mergiare una feature branch nella branch principale
-
Rebase
Reintegriamo la nostra feature branch utilizzando il rebase
-
Demo: rebase
Analizziamo con questa demo il reintegro con il rebase
-
Demo: gestione dei conflitti
In caso di modifica dello stesso file su branch diverse, come gestiamo i conflitti? Vediamolo in questa demo
-
Demo: gestione dei conflitti con rebase
Vediamo in questa demo come la gestione dei conflitti si complichi leggermente con i rebase
-
Squash
In chiusura di questo modulo sulle branches non può mancare il concetto di squash
-
Demo: squash
Vediamo, praticamente, come lo squash ci aiuta a mantenere lineare la storia del nostro progetto
-
Riepilogo
Riepiloghiamo i contenuti di questo lungo e intenso modulo sul branching
-
-
-
Introduzione
Vediamo di cosa parleremo in questo modulo
-
Server e Remotes demystified
Git non ha bisogno di server per funzionare, vediamo insieme perchè
-
Demo: copiare il repository manualmente
Vediamo in questa demo come copiare il nostro repository semplicemente con un copia e incolla da file system
-
Demo: repository bare
Scopriamo che cos'é un repository bare e come ci aiuta nel lavorare in team
-
Gestire il remote
Analizziamo il concetto di remote
-
Demo: aggiungere remote
Vediamo praticamente come aggiungere una remote al nostro repository Git
-
Demo: creare un repository da un remote esistente
Simuliamo un secondo sviluppatore che vuole lavorare sul nostro progetto creando un repository a partire dalla remote condivisa.
-
Demo: clonazione di un repository
Vediamo come sfruttare il comando git clone per velocizzare il lavoro di un secondo sviuppatore
-
Branch remote e branch locali
Facciamo il punto sulla gestioine delle branch in git e come vengono usate dagli sviluppatori
-
Demo: due sviluppatori modificano la branch principale
Vediamo cosa succede quando due sviluppatori lavorano in contemporanea sulla stessa branch principale
-
Demo: il primo sviluppatore invia le modifiche
Simuliamo il primo sviluppatore che invia le proprie modifiche alla branch remota
-
Demo: il secondo sviuppatore tenta l'invio delle proprie modifiche
Vediamo adesso che succede quando il secondo sviluppatore tenta l'invio delle proprie modifiche alla branch remota
-
Risoluzione dei conflitti
Vediamo che cos'è un conflitto e come gestirlo al meglio
-
Demo: risoluzione dei conflitti
Vediamo in questa demo come praticamente si risolvono i conflitti dovuti alle modifiche contemporanee di più sviluppatori
-
Lascia il campo più pulito di come l'hai trovato
Quando si lavora in team è importante fare tutto il possibile per lasciare pulito lo spazio comune, vediamo come.
-
Demo: configurare Git per usare rebase durante il pull
Vediamo in questo demo come configurare Git per usare rebase durante il pull
-
Commit logici e commit tecnici
Con Git possiamo fare tanti commit, alcuni logici e altri tecnici: vediamo la differenza.
-
Demo: squash e rebase
Vediamo come rendere lineare la storia del repository in presenza di commit tecnici utilizzando il comando squash
-
Lavorare con più branch pubbliche
Vediamo come tutto quello che abbiamo imparato si applica alle branch pubbliche
-
Demo: lavorare con due branch pubbliche
Vediamo nella pratica come due sviluppatori possano condividere una branch pubblica per collaborare su una funzionalità da sviluppare.
-
Demo: merge di branch pubbliche
Vediamo in questa demo come eseguire il merge da branch pubbliche
-
Demo: push force
Vediamo come forzare un push rimuovendo ramificazioni che sappiamo essere state già reintegrate con rebase
-
Demo: rebase branch pubbliche
Vediamo in questa demo come fare il rebase di branch pubbliche
-
Demo: rebase finale
In questa ultima parte di questa lunga demo, ultimiamo il lavoro di rebase e rendiamo lineare le branch di tutti gli sviluppatori.
-
Demo: Github
Vediamo in questa demo un esempio di server Git: Github
-
Conclusioni
Facciamo un riepilogo di quello che abbiamo visto in questo modulo
-
-
-
Cosa abbiamo imparato
In questo video conclusivo riassumiamo tutto quello che abbiamo imparato
-
Il docente
-
Gian Maria Ricci
Software Architect - Indipendent ConsultantRicci Gian Maria è da sempre appassionato di programmazione, partendo dal classico Vic20, come molti dei suoi coetanei, è passato attraverso molti linguaggi e tecnologie specializzandosi su C#, .NET e gestione del processo di sviluppo.
Tra i fondatori di DotNetMarche è attivo nel mondo community e per questo è MVP (Microsoft Most Valuable Professional) nella categoria Developer Tecnologies dal 2009.
Attualmente svolge libera professione nel mondo della consulenza su gestione di processo con Azure DevOps e GitHub e su sviluppo applicativi in .NET.