SlideShare a Scribd company logo
1 of 50
Download to read offline
#DevFest16
Intro to
Alfonso Piscitelli
Software Developer
@piscitelli91
#DevFest16#DevFest16
Programma
● Introduzione
○ Team di sviluppo
○ Problematiche da risolvere
○ Version of control
○ GIT
● Getting started on GIT
○ Inizializzare Repository
○ Aggiungere file al repo
○ Il primo commit
○ Sincronizzazione remota pull & push
○ Branch in GIT
#DevFest16#DevFest16
Introduzione
#DevFest16
Un CLASSICO team di sviluppo
Caricate
sul server!!
#DevFest16
U CLASSICO team di sviluppo..
Un attimo, sto
risolvendo un
bug urgente
Sto
facendo
una
modifica
Meglio
cazzeggiare
su Facebook
va!
Datemi
un
secondo!
Un CLASSICO team di sviluppo
#DevFest16
Hei, c’è nessuno? Sto
facendo una modifica
Fermi tutti!
Adesso ti mando le mie
modifiche via mail
Ci sono!
Un MODERNO team di sviluppo
#DevFest16
SERVE QUALCOSA CHE..
#DevFest16
Permetta di lavorare insieme sullo stesso
progetto software
SERVE QUALCOSA CHE..
#DevFest16
Permetta di lavorare insieme sullo stesso FILE
SERVE QUALCOSA CHE..
#DevFest16
Dia visione dell’evoluzione del progetto
SERVE QUALCOSA CHE..
#DevFest16
Permetta di tornare ad un punto precedente
dello sviluppo
SERVE QUALCOSA CHE..
#DevFest16
Permetta di effettuare una diramazione del
progetto
SERVE QUALCOSA CHE..
#DevFest16
Permetta di lavorare insieme sullo stesso progetto
software
Permetta di lavorare insieme sullo stesso FILE
Dia visione dell’evoluzione del progetto
Permetta di tornare ad un punto precedente dello
sviluppo
Permetta di effettuare una diramazione del progetto
SERVE QUALCOSA CHE..
#DevFest16
VCS - Version Control System
Inizia a scrivere un
documento
Modifica una sezione del
documento
Si accorge di aver
modificato la
sezione sbagliata
#DevFest16
Tornare indietro nel tempo
Inizio Modifica
1
Modifica
2
Modifica
n
Modifica
n+1
#DevFest16
Tornare indietro nel tempo
Inizio Modifica
1
Modifica
2
Modifica
n
Modifica
n+1
#DevFest16
Tornare indietro nel tempo
Inizio Modifica
1
Modifica
2
Modifica
n
#DevFest16#DevFest16
GIT
#DevFest16
● Sistema di controllo di versione (VCS)
● VCS distribuito
● VCS particolarmente efficiente e scalabile
● Creato da Linus Torvalds
GIT?
#DevFest16
● Un VCS gestisce la collaborazione al progetto
● Per monitorare lo stato del progetto
● Per poter tornare indietro nelle versioni in caso di problemi
Perché usare un VCS come GIT?
#DevFest16
In poche parole...
#DevFest16
Per gestire meglio il tuo progetto software
#DevFest16
Inoltre, sempre più aziende usano GIT
Perché usare un VCS come GIT?
#DevFest16#DevFest16
Repository Gratuiti
#DevFest16#DevFest16
Getting Started
Prendiamo confidenza con GIT
#DevFest16#DevFest16
Repository
Il repository nei VCS è la scatola
che contiene tutte le
informazioni del nostro progetto
(metadati, sorgenti ecc).
#DevFest16#DevFest16
Creazione di un Repository GIT
Per creare un repository su GIT apriamo un terminale e digitiamo:
git init
#DevFest16#DevFest16
Creazione di un Repository GIT
Da questo momento GIT monitorerà il repository, in attesa di cambi di stato. Proviamo ad
aggiungere un file
#DevFest16#DevFest16
Aggiunta di un file al Repository
E lanciamo il comando git status. Git riconoscerà l’aggiunta del nuovo file
#DevFest16#DevFest16
Commit ?
● Punto di avanzamento del progetto
● Un commit rappresenta un passo avanti nel progetto
● Rende una serie di cambiamenti definitivi
● Un commit è caratterizzato da:
○ I file modificati
○ Una descrizione del commit
#DevFest16#DevFest16
Aggiungere file al commit
Per aggiungere un file al commit digitiamo il comando:
git add nomefile.ext
Lanciando un git-status scopriremo che il nostro file è pronto
#DevFest16#DevFest16
Il primo commit non si scorda mai
git commit -m ‘descrizione del commit’
#DevFest16#DevFest16
Il primo commit non si scorda mai
git commit -m ‘descrizione del commit’
#DevFest16
Il primo commit non si scorda mai
Git config
user.name
= Alfonso
Git config
user.email =
aaa@bbb.cc
Chi Sei?
#DevFest16#DevFest16
Il primo commit non si scorda mai
git commit -m ‘descrizione del commit’
#DevFest16
Sincronizzazione remota: pull & pushSincronizzazione remota: pull & push
#DevFest16#DevFest16
Sincronizzazione remota: pull & push
$ git push
$ git pull
Per sincronizzare il proprio repository dal server
Per sincronizzare il server con i nostri commit
#DevFest16#DevFest16
Cronologia dei commit
git log
#DevFest16#DevFest16
Branch
Diramazioni di un progetto
#DevFest16#DevFest16
Cosa è un branch
● Ogni volta che facciamo un commit salviamo lo stato del progetto in quel momento
● Può essere necessario ripartire da un punto e fare altri sviluppi
● Un branch rappresenta una diramazione del progetto
cmaster c c
#DevFest16#DevFest16
Cosa è un branch
cmaster c c
c c cdev
c
Da questo momento i due rami hanno
vita indipendente.
#DevFest16#DevFest16
Perché un branch?
● Per lavorare autonomamente ad una parte del progetto
● Per lavorare ad una nuova feature del progetto
○ Potrei lavorare sul branch master?
○ No! Se mentre aggiungi una feature devi risolvere un bug?
● Per intervenire su un bug senza compromettere gli altri sviluppi
#DevFest16#DevFest16
Creazione di un branch
In git abbiamo due modi per creare un branch.
● Creare un branch partendo dal punto attuale del progetto
● Creare un branch partendo da un punto (commit) preciso del progetto
#DevFest16#DevFest16
Creazione di un branch
Per creare un branch partendo dal punto attuale del progetto usiamo il comando
git branch nomeBranch
Per entrare nel ramo appena creato invece, usiamo il comando git checkout
git checkout nomeBranch
#DevFest16#DevFest16
Creazione di un branch
#DevFest16#DevFest16
Creazione di un branch
Per creare un branch partendo da un punto (commit) preciso del progetto,
invece, dobbiamo ottenere prima l’id del commit da cui vogliamo ripartire
git log
#DevFest16#DevFest16
Creazione di un branch
Per creare un branch partendo da un punto (commit) preciso del progetto,
invece, dobbiamo ottenere prima l’id del commit da cui vogliamo ripartire
git log
Id del commit
#DevFest16#DevFest16
Creazione di un branch
A questo punto, come prima, utilizziamo il comando git checkout, con il
parametro -b.
git checkout id_del_commit -b
nome_branch
#DevFest16#DevFest16
Creazione di un branch
A questo punto, come prima, utilizziamo il comando git checkout, con il
parametro -b.
git checkout id_del_commit -b nome_branch
N.B. Git ti sposterà direttamente nel branch appena creato
#DevFest16#DevFest16
Grazie per
l’attenzione
@piscitelli91

More Related Content

What's hot

Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and GithubHouari ZEGAI
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowMikhail Melnik
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucketSumin Byeon
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHubNicolás Tourné
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control SystemKMS Technology
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsAlice Loeser
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An IntroductionBehzad Altaf
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitLukas Fittl
 

What's hot (20)

Git training v10
Git training v10Git training v10
Git training v10
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
github-actions.pdf
github-actions.pdfgithub-actions.pdf
github-actions.pdf
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-Flow
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Git vs svn
Git vs svnGit vs svn
Git vs svn
 
Bitbucket
BitbucketBitbucket
Bitbucket
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Git & Github for beginners
Git & Github for beginnersGit & Github for beginners
Git & Github for beginners
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 

Similar to Introduzione a Git

Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Gerardo Di Iorio
 
Distribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradleDistribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradlePaolo Montalto
 
Introduzione a Git e GitLab
Introduzione a Git e GitLabIntroduzione a Git e GitLab
Introduzione a Git e GitLabYefry Figueroa
 
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
Dall'idea al deploy   un lungo viaggio che passa per git flow e semverDall'idea al deploy   un lungo viaggio che passa per git flow e semver
Dall'idea al deploy un lungo viaggio che passa per git flow e semverMauro Servienti
 
Da GitHub a Nuget con la nuova build di Visual Studio Online
Da GitHub a Nuget con la nuova build di Visual Studio OnlineDa GitHub a Nuget con la nuova build di Visual Studio Online
Da GitHub a Nuget con la nuova build di Visual Studio OnlineDavide Benvegnù
 
Linux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceLinux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceFabio Mora
 
Exploring VS Code
Exploring VS CodeExploring VS Code
Exploring VS Codedotnetcode
 
Data Analysis & Machine Learning
Data Analysis & Machine LearningData Analysis & Machine Learning
Data Analysis & Machine LearningCaffeina
 
Development process
Development processDevelopment process
Development processEmidio Croci
 
Chi ha paura di Github? Conosciamolo meglio!
Chi ha paura di Github? Conosciamolo meglio!Chi ha paura di Github? Conosciamolo meglio!
Chi ha paura di Github? Conosciamolo meglio!Giacoma Allegretta
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migrationAndrea Cirioni
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target AndroidPaolo Sereno
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...Marco Parenzan
 
Works with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and MacWorks with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and MacEmanuele Bartolesi
 

Similar to Introduzione a Git (20)

Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
 
Distribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradleDistribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradle
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
 
Introduzione a Git e GitLab
Introduzione a Git e GitLabIntroduzione a Git e GitLab
Introduzione a Git e GitLab
 
GitSlides
GitSlidesGitSlides
GitSlides
 
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
Dall'idea al deploy   un lungo viaggio che passa per git flow e semverDall'idea al deploy   un lungo viaggio che passa per git flow e semver
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
 
Da GitHub a Nuget con la nuova build di Visual Studio Online
Da GitHub a Nuget con la nuova build di Visual Studio OnlineDa GitHub a Nuget con la nuova build di Visual Studio Online
Da GitHub a Nuget con la nuova build di Visual Studio Online
 
Linux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceLinux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelance
 
Exploring VS Code
Exploring VS CodeExploring VS Code
Exploring VS Code
 
Data Analysis & Machine Learning
Data Analysis & Machine LearningData Analysis & Machine Learning
Data Analysis & Machine Learning
 
Xamarin DevOps
Xamarin DevOpsXamarin DevOps
Xamarin DevOps
 
Development process
Development processDevelopment process
Development process
 
Git branching model
Git branching modelGit branching model
Git branching model
 
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
 
Chi ha paura di Github? Conosciamolo meglio!
Chi ha paura di Github? Conosciamolo meglio!Chi ha paura di Github? Conosciamolo meglio!
Chi ha paura di Github? Conosciamolo meglio!
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target Android
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Works with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and MacWorks with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and Mac
 

Introduzione a Git