SlideShare a Scribd company logo
1 of 19
Download to read offline
Un modello di branching per Git che
funziona – 30/04/2013
Git Flow
PUG Marche
1
Contenuti
•
•
•
•
Flusso completo
Branch principali
Branch di supporto
Esperienze, strumenti e riferimenti
2
Il modello di git-flow
E’ una strategia di branching e release
management
Idoneo per sviluppo concorrente di più
feature
Supporta lo sviluppo in pair programming
Idoneo per la continuous integration
E’ ottimo per il continuous deployment e
consente di applicare velocemente bug fix
(“hot fix”)
Caratteristiche e benefici
Flusso di sviluppo e di hot fix
3
Feature br. Develop Release br. Master
Master Hot fix
Master
Develop
Sviluppo
Hot fix in produzione
Pair programming e team per funzionalità
4
Sintesi dei branch
5
Master: produzione
Develop: integrazione
Hotfixes: applicazione di bug fix in
produzione
Release: release candidate
Feature branches: branch dedicati
agli sviluppi di singole feature
Elenco dei branch
6
Contenuti
•
•
•
•
Flusso completo
Branch principali
Branch di supporto
Esperienze, strumenti e riferimenti
I branch principali: master e develop
7
• origin e master non vengono mai
eliminati: esistono in qualsiasi momento
del progetto
• Gli altri branch sono solo temporanei
• origin/master è il branch principale per il
codice production-ready
• origin/develop è il branch principale per
gli sviluppi (è anche il branch di
riferimento per la continuous integration)
• Quando il codice in develop è stabile a
sufficienza viene effettuato il merge su
master e viene impostato il tag della
release
Descrizione e flusso di base
8
Contenuti
•
•
•
•
Flusso completo
Branch principali
Branch di supporto
Esperienze, strumenti e riferimenti
Branch delle feature
9
Utilizzato per sviluppi a breve o lungo
termine.
Ci possono essere più feature branch in
parallelo.
Il branch può partire da develop e viene
effettuato il merge di ritorno sempre su
develop
Può essere chiamato con qualsiasi nome
diverso da master, develop, release-* o
hotfix-*
Esiste tipicamente solo nel repository dello
sviluppatore
Descrizione e flusso
Branch delle feature: comandi
10
Creare un nuovo branch per una feature:
$ git checkout -b myfeature develop
Switched to a new branch "myfeature"
Incorporare un branch di una feature su develop:
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop
Differenza con e senza fast forward:
Branch delle release
11
Supportano la preparazione del codice per il
rilascio in produzione
A questo punto, tutte le feature che sono
considerate pronte per il rilascio devono
essere già state riportate su develop
Il branch può partire da develop e viene
effettuato il merge di ritorno sempre su
master e develop
Convenzione di naming: release-*
Descrizione e flusso
Branch delle release: comandi
12
Creare un nuovo branch per una release:
$ git checkout -b release-1.2 develop
Switched to a new branch "release-1.2"
$ ./bump-version.sh 1.2
Files modified successfully, version bumped to 1.2.
$ git commit -a -m "Bumped version number to 1.2"
[release-1.2 74d9424] Bumped version number to 1.2
1 files changed, 1 insertions(+), 1 deletions(-)
Concludere una release:
Merge su master e tag:
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2
Riportare le modifiche su develop:
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
Rimuovere la release:
$ git branch -d release-1.2
Deleted branch release-1.2 (was ff452fe).
Branch degli hot fix
13
Serve per correggere bug fix critici in
produzione senza attendere che il ramo
develop sia pronto per il rilascio.
Il branch può partire da master e viene
effettuato il merge di ritorno sempre su
master e develop
Convenzione di naming: hotfix-*
Descrizione e flusso
Branch degli hot fix: comandi
14
Creare un nuovo hot fix per effettuare il bug fixing:
$ git checkout -b hotfix-1.2.1 master
Switched to a new branch "hotfix-1.2.1"
$ ./bump-version.sh 1.2.1
Files modified successfully, version bumped to 1.2.1.
$ git commit -a -m "Bumped version number to 1.2.1"
[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1
1 files changed, 1 insertions(+), 1 deletions(-)
Merge su master dopo avere effettuato il bug fix:
$ git commit -m "Fixed severe production problem"
[hotfix-1.2.1 abbe5d6] Fixed severe production problem
5 files changed, 32 insertions(+), 17 deletions(-)
Concludere un hot fix:
Merge su master e tag:
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2.1
Riportare il bug fix su develop:
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff hotfix-1.2.1
Merge made by recursive.
(Summary of changes)
Rimuovere l’hot fix:
$ git branch -d hotfix-1.2.1
Deleted branch hotfix-1.2.1 (was abbe5d6).
Eccezione: quando esiste già un branch di release, il merge del
bug fix deve essere effettuato sul release branch e non su develop
15
Contenuti
•
•
•
•
Flusso completo
Branch principali
Branch di supporto
Esperienze, strumenti e riferimenti
Estensione git per operazioni git-flow ad alto livello
https://github.com/nvie/gitflow
16
Esempi:
git flow feature
git flow feature start <name> [<base>]
git flow feature finish <name>
git flow release
git flow release start <release> [<base>]
git flow release finish <release>
git flow hotfix
git flow hotfix start <release> [<base>]
git flow hotfix finish <release>
Supporto git-flow di Source Tree (frontend per Mac e Windows)
http://blog.sourcetreeapp.com/2012/08/01/smart-branching-with-sourcetree-and-git-flow/
17
Riferimenti
Articolo originale: http://nvie.com/posts/a-successful-git-branching-model/
Git-flow con rebase: http://ctoinsights.wordpress.com/2012/06/29/git-flow-with-
rebase/
18

More Related Content

What's hot

Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Gemma Catolino
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Paolo Ferretti
 
Introduzione ai componenti in Angular 4
Introduzione ai componenti in Angular 4Introduzione ai componenti in Angular 4
Introduzione ai componenti in Angular 4Giovanni Buffa
 
Maven from dummies
Maven from dummiesMaven from dummies
Maven from dummiesfirenze-gtug
 
Introduzioni ai services in Angular 4 e ad RxJS
Introduzioni ai services in Angular 4 e ad RxJSIntroduzioni ai services in Angular 4 e ad RxJS
Introduzioni ai services in Angular 4 e ad RxJSGiovanni Buffa
 
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2Giorgio Cefaro
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 
Revisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con gitRevisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con gitFabio Alessandrelli
 
Simone Carletti: Zend Framework ed i Web Service
Simone Carletti: Zend Framework ed i Web ServiceSimone Carletti: Zend Framework ed i Web Service
Simone Carletti: Zend Framework ed i Web ServiceFrancesco Fullone
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
 

What's hot (15)

Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Git e GitHub - L'essenziale
Git e GitHub - L'essenziale
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
 
GitSlides
GitSlidesGitSlides
GitSlides
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3
 
Introduzione ai componenti in Angular 4
Introduzione ai componenti in Angular 4Introduzione ai componenti in Angular 4
Introduzione ai componenti in Angular 4
 
Maven from dummies
Maven from dummiesMaven from dummies
Maven from dummies
 
Introduzioni ai services in Angular 4 e ad RxJS
Introduzioni ai services in Angular 4 e ad RxJSIntroduzioni ai services in Angular 4 e ad RxJS
Introduzioni ai services in Angular 4 e ad RxJS
 
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
Revisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con gitRevisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con git
 
Simone Carletti: Zend Framework ed i Web Service
Simone Carletti: Zend Framework ed i Web ServiceSimone Carletti: Zend Framework ed i Web Service
Simone Carletti: Zend Framework ed i Web Service
 
Maven Eclipse
Maven EclipseMaven Eclipse
Maven Eclipse
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automation
 

Similar to Git Flow - Un modello di branching che funziona

Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a gitrpanfili
 
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
 
OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!Alex Comba
 
Git: un'introduzione pratica
Git: un'introduzione praticaGit: un'introduzione pratica
Git: un'introduzione praticaBabel
 
Git gestione comoda del repository
Git   gestione comoda del repositoryGit   gestione comoda del repository
Git gestione comoda del repositoryRoberto Polli
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a gitKlab
 
Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Klab
 
Wss Solution Framework
Wss Solution FrameworkWss Solution Framework
Wss Solution Frameworkmakkros
 
Development process
Development processDevelopment process
Development processEmidio Croci
 
CI/CD - Presentazione Introduttiva
CI/CD - Presentazione IntroduttivaCI/CD - Presentazione Introduttiva
CI/CD - Presentazione IntroduttivaMatteo Di Carlo
 
TYPO3 Versione 10.1 - Le novita
TYPO3 Versione 10.1 - Le novitaTYPO3 Versione 10.1 - Le novita
TYPO3 Versione 10.1 - Le novitaRoberto Torresani
 

Similar to Git Flow - Un modello di branching che funziona (20)

Introduzione a git
Introduzione a gitIntroduzione a git
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.
 
Git branching model
Git branching modelGit branching model
Git branching model
 
VCS - DVCS - GIT-FLOW
VCS - DVCS - GIT-FLOWVCS - DVCS - GIT-FLOW
VCS - DVCS - GIT-FLOW
 
OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!
 
05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!
 
Git: un'introduzione pratica
Git: un'introduzione praticaGit: un'introduzione pratica
Git: un'introduzione pratica
 
Git gestione comoda del repository
Git   gestione comoda del repositoryGit   gestione comoda del repository
Git gestione comoda del repository
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a git
 
Git
GitGit
Git
 
Standard Dev Workflow
Standard Dev WorkflowStandard Dev Workflow
Standard Dev Workflow
 
Emerasoft Git quickstart
Emerasoft Git quickstartEmerasoft Git quickstart
Emerasoft Git quickstart
 
Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)
 
Xamarin DevOps
Xamarin DevOpsXamarin DevOps
Xamarin DevOps
 
Wss Solution Framework
Wss Solution FrameworkWss Solution Framework
Wss Solution Framework
 
GITT (part 1 of 2)
GITT (part 1 of 2)GITT (part 1 of 2)
GITT (part 1 of 2)
 
Development process
Development processDevelopment process
Development process
 
CI/CD - Presentazione Introduttiva
CI/CD - Presentazione IntroduttivaCI/CD - Presentazione Introduttiva
CI/CD - Presentazione Introduttiva
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
 
TYPO3 Versione 10.1 - Le novita
TYPO3 Versione 10.1 - Le novitaTYPO3 Versione 10.1 - Le novita
TYPO3 Versione 10.1 - Le novita
 

Recently uploaded

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 

Recently uploaded (6)

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 

Git Flow - Un modello di branching che funziona

  • 1. Un modello di branching per Git che funziona – 30/04/2013 Git Flow PUG Marche
  • 2. 1 Contenuti • • • • Flusso completo Branch principali Branch di supporto Esperienze, strumenti e riferimenti
  • 3. 2 Il modello di git-flow E’ una strategia di branching e release management Idoneo per sviluppo concorrente di più feature Supporta lo sviluppo in pair programming Idoneo per la continuous integration E’ ottimo per il continuous deployment e consente di applicare velocemente bug fix (“hot fix”) Caratteristiche e benefici
  • 4. Flusso di sviluppo e di hot fix 3 Feature br. Develop Release br. Master Master Hot fix Master Develop Sviluppo Hot fix in produzione
  • 5. Pair programming e team per funzionalità 4
  • 6. Sintesi dei branch 5 Master: produzione Develop: integrazione Hotfixes: applicazione di bug fix in produzione Release: release candidate Feature branches: branch dedicati agli sviluppi di singole feature Elenco dei branch
  • 7. 6 Contenuti • • • • Flusso completo Branch principali Branch di supporto Esperienze, strumenti e riferimenti
  • 8. I branch principali: master e develop 7 • origin e master non vengono mai eliminati: esistono in qualsiasi momento del progetto • Gli altri branch sono solo temporanei • origin/master è il branch principale per il codice production-ready • origin/develop è il branch principale per gli sviluppi (è anche il branch di riferimento per la continuous integration) • Quando il codice in develop è stabile a sufficienza viene effettuato il merge su master e viene impostato il tag della release Descrizione e flusso di base
  • 9. 8 Contenuti • • • • Flusso completo Branch principali Branch di supporto Esperienze, strumenti e riferimenti
  • 10. Branch delle feature 9 Utilizzato per sviluppi a breve o lungo termine. Ci possono essere più feature branch in parallelo. Il branch può partire da develop e viene effettuato il merge di ritorno sempre su develop Può essere chiamato con qualsiasi nome diverso da master, develop, release-* o hotfix-* Esiste tipicamente solo nel repository dello sviluppatore Descrizione e flusso
  • 11. Branch delle feature: comandi 10 Creare un nuovo branch per una feature: $ git checkout -b myfeature develop Switched to a new branch "myfeature" Incorporare un branch di una feature su develop: $ git checkout develop Switched to branch 'develop' $ git merge --no-ff myfeature Updating ea1b82a..05e9557 (Summary of changes) $ git branch -d myfeature Deleted branch myfeature (was 05e9557). $ git push origin develop Differenza con e senza fast forward:
  • 12. Branch delle release 11 Supportano la preparazione del codice per il rilascio in produzione A questo punto, tutte le feature che sono considerate pronte per il rilascio devono essere già state riportate su develop Il branch può partire da develop e viene effettuato il merge di ritorno sempre su master e develop Convenzione di naming: release-* Descrizione e flusso
  • 13. Branch delle release: comandi 12 Creare un nuovo branch per una release: $ git checkout -b release-1.2 develop Switched to a new branch "release-1.2" $ ./bump-version.sh 1.2 Files modified successfully, version bumped to 1.2. $ git commit -a -m "Bumped version number to 1.2" [release-1.2 74d9424] Bumped version number to 1.2 1 files changed, 1 insertions(+), 1 deletions(-) Concludere una release: Merge su master e tag: $ git checkout master Switched to branch 'master' $ git merge --no-ff release-1.2 Merge made by recursive. (Summary of changes) $ git tag -a 1.2 Riportare le modifiche su develop: $ git checkout develop Switched to branch 'develop' $ git merge --no-ff release-1.2 Merge made by recursive. (Summary of changes) Rimuovere la release: $ git branch -d release-1.2 Deleted branch release-1.2 (was ff452fe).
  • 14. Branch degli hot fix 13 Serve per correggere bug fix critici in produzione senza attendere che il ramo develop sia pronto per il rilascio. Il branch può partire da master e viene effettuato il merge di ritorno sempre su master e develop Convenzione di naming: hotfix-* Descrizione e flusso
  • 15. Branch degli hot fix: comandi 14 Creare un nuovo hot fix per effettuare il bug fixing: $ git checkout -b hotfix-1.2.1 master Switched to a new branch "hotfix-1.2.1" $ ./bump-version.sh 1.2.1 Files modified successfully, version bumped to 1.2.1. $ git commit -a -m "Bumped version number to 1.2.1" [hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1 1 files changed, 1 insertions(+), 1 deletions(-) Merge su master dopo avere effettuato il bug fix: $ git commit -m "Fixed severe production problem" [hotfix-1.2.1 abbe5d6] Fixed severe production problem 5 files changed, 32 insertions(+), 17 deletions(-) Concludere un hot fix: Merge su master e tag: $ git checkout master Switched to branch 'master' $ git merge --no-ff hotfix-1.2.1 Merge made by recursive. (Summary of changes) $ git tag -a 1.2.1 Riportare il bug fix su develop: $ git checkout develop Switched to branch 'develop' $ git merge --no-ff hotfix-1.2.1 Merge made by recursive. (Summary of changes) Rimuovere l’hot fix: $ git branch -d hotfix-1.2.1 Deleted branch hotfix-1.2.1 (was abbe5d6). Eccezione: quando esiste già un branch di release, il merge del bug fix deve essere effettuato sul release branch e non su develop
  • 16. 15 Contenuti • • • • Flusso completo Branch principali Branch di supporto Esperienze, strumenti e riferimenti
  • 17. Estensione git per operazioni git-flow ad alto livello https://github.com/nvie/gitflow 16 Esempi: git flow feature git flow feature start <name> [<base>] git flow feature finish <name> git flow release git flow release start <release> [<base>] git flow release finish <release> git flow hotfix git flow hotfix start <release> [<base>] git flow hotfix finish <release>
  • 18. Supporto git-flow di Source Tree (frontend per Mac e Windows) http://blog.sourcetreeapp.com/2012/08/01/smart-branching-with-sourcetree-and-git-flow/ 17
  • 19. Riferimenti Articolo originale: http://nvie.com/posts/a-successful-git-branching-model/ Git-flow con rebase: http://ctoinsights.wordpress.com/2012/06/29/git-flow-with- rebase/ 18