SlideShare a Scribd company logo
Distributed Revision Control / Branching & Workflow Model
Hello Git / Git
Flow
Jason Hanson
@jayfour000
Credit & Reference
❖ https://www.atlassian.com/git/tutorials/comparing-
workflows/gitflow-workflow
❖ http://nvie.com/posts/a-successful-git-branching-model/
Why Revision Control?
Why Revision Control?
❖ Code is complicated and changes over time
❖ I make mistakes in my code
❖ YOU make mistakes in my code!
❖ Takes longer than one day to write software
❖ Software lives longer than my hard drive
Wait. What?
Hello World Goodbye World Hello Jason
Goodbye Jason
Distributed Revision Control Options
❖ Mercurial
❖ Microsoft Visual SourceSafe
❖ CVS
❖ SVN
❖ Git
Hello Git
❖ Developed by Linus Torvalds for
Linux kernel development in 2005
❖ Every working directory is a full
repository
❖ Unlike CSV, SVN, etc
❖ More power
❖ Useful for 1 person teams too
local vs origin
❖ checkout from origin to local
❖ commit changes to local
❖ push from local to origin
❖ pull from origin to local
Note: Git can be used local only too
branch
❖ A branch represents an independent
line of development.
❖ Branches serve as an abstraction for
the edit/stage/commit process
❖ I think of them as branches of a tree
❖ New commits are recorded in the
history for the current branch
Tools
❖ Terminal
❖ SourceTree
❖ Git Tower
❖ IntelliJ IDEs (WebStorm,
AppCode, Android Studio,
IDEA)
❖ Others?
Tools - Terminal
❖ PROS
❖ Free
❖ Simple
❖ Powerful - do all the things
❖ CONS
❖ Memorize commands
❖ Lots of typing
❖ Not friendly
Tools - SourceTree
❖ PROS
❖ Free
❖ Powerful
❖ Large user base
❖ CONS
❖ Overwhelming # of options
❖ Crashes 20+ times a day!
Tools - Git Tower
❖ PROS
❖ Easy to use
❖ Good UX
❖ Does not crash
❖ Cool logo
❖ CONS
❖ Can’t do every command
❖ Cost $60
Tools - Alt Options
❖ Comfort level
❖ What do you use?
Gitflow
Gitflow Origins
❖ Vincent Driessen
❖ Blog post Jan, 2010
❖ Today is widely used
❖ Built into SourceTree
❖ Built into Tower 2
❖ Supported by Atlassian
Gitflow - Overview
❖ Strict branching model
❖ Suports multiple concurrent
releases
❖ Robust workflow for larger
projects
Gitflow - Workflow
❖ Central repository (origin)
❖ Dev work locally (local) and
push branches to central
repository (origin)
master
master
❖ The master branch stores the official release history
❖ Tag created for version number merges
❖ HEAD always reflects a production-ready state
❖ Should be able to promote HEAD of master to
production at any time
develop
develop
❖ Integration branch for features
❖ QA works off develop
❖ develop is merged into master at certain milestones
feature/*
feature/*
❖ Each new feature should reside in its own branch
❖ feature branches use develop as their parent
branch
❖ When a feature is complete, it gets merged back
into develop
❖ feature branches should never interact directly
with master.
feature/* - many branches
release/*
release/*
❖ Once develop has acquired enough features for a release,
you fork a release branch off of develop.
❖ No new features can be added after this point—only bug
fixes,
❖ Once it's ready to ship, the release gets merged into
master
❖ tag with a version number.
❖ merge release back into develop, which may have
progressed since the release was created
hotfix/*
hotfix/*
❖ hotfix branches are used to quickly patch production
releases
❖ Only hotfix branch should fork directly off of master
❖ As soon as the fix is complete, it should be merged into both
master and develop
❖ master should be tagged with an updated version number.
❖ Having a dedicated line of development for bug fixes lets
your team address issues without interrupting the rest of the
workflow or waiting for the next release cycle.

More Related Content

What's hot

Git collaboration
Git collaborationGit collaboration
Git collaboration
Pham Quy (Jack)
 
QuizUp Web Monorepo
QuizUp Web MonorepoQuizUp Web Monorepo
QuizUp Web Monorepo
Arnar Þór Sveinsson
 
Bitbucket pipelines
Bitbucket pipelinesBitbucket pipelines
Bitbucket pipelines
Hoffman Lab
 
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & MigrationNo More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
podsframework
 
VersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient DevelopersVersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient Developers
Philippe Creux
 
Collaborative development with git
Collaborative development with gitCollaborative development with git
Collaborative development with git
Joseluis Laso
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
Pavlo Hodysh
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Samsul Ma'arif
 
Atlassian Bamboo Feature Overview
Atlassian Bamboo Feature OverviewAtlassian Bamboo Feature Overview
Atlassian Bamboo Feature Overview
Jim Bethancourt
 
Git basic
Git basicGit basic
Git basic
saif shobuz
 
The self service developer
The self service developerThe self service developer
The self service developer
Laszlo Fogas
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
Edmund Turbin
 
Enabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source JenkinsEnabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source Jenkins
Masood Jan
 
Improved development workflows using vagrant
Improved development workflows using vagrantImproved development workflows using vagrant
Improved development workflows using vagrant
Makis Asimidis
 
Implementation of the Continuous Integration based on Atlassian Bamboo
 Implementation of the Continuous Integration based on Atlassian Bamboo Implementation of the Continuous Integration based on Atlassian Bamboo
Implementation of the Continuous Integration based on Atlassian Bamboo
Анете Аннемария
 
A Git Workflow Model or Branching Strategy
A Git Workflow Model or Branching StrategyA Git Workflow Model or Branching Strategy
A Git Workflow Model or Branching Strategy
Vivek Parihar
 
Intro to openfaas
Intro to openfaasIntro to openfaas
Intro to openfaas
Hong Zhan (Michael) Huang
 
Drupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflowDrupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflow
valuebound
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to Hero
EPAM
 

What's hot (20)

Git collaboration
Git collaborationGit collaboration
Git collaboration
 
QuizUp Web Monorepo
QuizUp Web MonorepoQuizUp Web Monorepo
QuizUp Web Monorepo
 
Bitbucket pipelines
Bitbucket pipelinesBitbucket pipelines
Bitbucket pipelines
 
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & MigrationNo More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
 
VersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient DevelopersVersaPay's Tools for Happyfficient Developers
VersaPay's Tools for Happyfficient Developers
 
Collaborative development with git
Collaborative development with gitCollaborative development with git
Collaborative development with git
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
 
Atlassian Bamboo Feature Overview
Atlassian Bamboo Feature OverviewAtlassian Bamboo Feature Overview
Atlassian Bamboo Feature Overview
 
Git basic
Git basicGit basic
Git basic
 
The self service developer
The self service developerThe self service developer
The self service developer
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
Enabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source JenkinsEnabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source Jenkins
 
Improved development workflows using vagrant
Improved development workflows using vagrantImproved development workflows using vagrant
Improved development workflows using vagrant
 
Implementation of the Continuous Integration based on Atlassian Bamboo
 Implementation of the Continuous Integration based on Atlassian Bamboo Implementation of the Continuous Integration based on Atlassian Bamboo
Implementation of the Continuous Integration based on Atlassian Bamboo
 
A Git Workflow Model or Branching Strategy
A Git Workflow Model or Branching StrategyA Git Workflow Model or Branching Strategy
A Git Workflow Model or Branching Strategy
 
Intro to openfaas
Intro to openfaasIntro to openfaas
Intro to openfaas
 
Git workflows
Git workflowsGit workflows
Git workflows
 
Drupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflowDrupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflow
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to Hero
 

Viewers also liked

Narrative Theory
Narrative TheoryNarrative Theory
Narrative Theory
harry98gupta
 
El bautismo
El bautismoEl bautismo
El bautismo
Andres Valencia
 
ULTIMAS OFERTAS
ULTIMAS OFERTASULTIMAS OFERTAS
ULTIMAS OFERTAS
famrodi2012
 
certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...
certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...
certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...Fenny Straat
 
Debunking the Myths of Social Customer Care by Hootsuite & Zendesk
Debunking the Myths of Social Customer Care by Hootsuite & ZendeskDebunking the Myths of Social Customer Care by Hootsuite & Zendesk
Debunking the Myths of Social Customer Care by Hootsuite & Zendesk
Hootsuite
 
The martians a radio play
The martians   a radio playThe martians   a radio play
The martians a radio playenrique_lim4
 
Ativ4 Unid1 Telmamaruchi Srp
Ativ4 Unid1 Telmamaruchi SrpAtiv4 Unid1 Telmamaruchi Srp
Ativ4 Unid1 Telmamaruchi SrpTelma Maruchi
 
Simulacro Pruebas Saber 5 -- 2016
Simulacro Pruebas Saber 5 -- 2016Simulacro Pruebas Saber 5 -- 2016
Simulacro Pruebas Saber 5 -- 2016
linamaria-02
 
Brochure gonflables 0315
Brochure gonflables   0315Brochure gonflables   0315
Brochure gonflables 0315pubeo
 
An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...
An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...
An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...
International WaterCentre
 
Ballard score.. - Dr Padmesh - Neonatology
Ballard score..  - Dr Padmesh - NeonatologyBallard score..  - Dr Padmesh - Neonatology
Ballard score.. - Dr Padmesh - Neonatology
Dr Padmesh Vadakepat
 
Perinatal infections- Diagnosis & Management - Dr Padmesh - Neonatology
Perinatal infections- Diagnosis & Management  - Dr Padmesh - NeonatologyPerinatal infections- Diagnosis & Management  - Dr Padmesh - Neonatology
Perinatal infections- Diagnosis & Management - Dr Padmesh - Neonatology
Dr Padmesh Vadakepat
 
Bone marrow transplant
Bone marrow transplantBone marrow transplant
Bone marrow transplanthelunchis
 

Viewers also liked (16)

Narrative Theory
Narrative TheoryNarrative Theory
Narrative Theory
 
El bautismo
El bautismoEl bautismo
El bautismo
 
ULTIMAS OFERTAS
ULTIMAS OFERTASULTIMAS OFERTAS
ULTIMAS OFERTAS
 
Agua
AguaAgua
Agua
 
certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...
certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...
certificaat mastersclaas financien voor niet fianciele commissaris Nationaal ...
 
Debunking the Myths of Social Customer Care by Hootsuite & Zendesk
Debunking the Myths of Social Customer Care by Hootsuite & ZendeskDebunking the Myths of Social Customer Care by Hootsuite & Zendesk
Debunking the Myths of Social Customer Care by Hootsuite & Zendesk
 
Kyoto Japoni
Kyoto JaponiKyoto Japoni
Kyoto Japoni
 
Moto Bomba CabeçA De Rego 3ºC
Moto Bomba CabeçA De Rego 3ºCMoto Bomba CabeçA De Rego 3ºC
Moto Bomba CabeçA De Rego 3ºC
 
The martians a radio play
The martians   a radio playThe martians   a radio play
The martians a radio play
 
Ativ4 Unid1 Telmamaruchi Srp
Ativ4 Unid1 Telmamaruchi SrpAtiv4 Unid1 Telmamaruchi Srp
Ativ4 Unid1 Telmamaruchi Srp
 
Simulacro Pruebas Saber 5 -- 2016
Simulacro Pruebas Saber 5 -- 2016Simulacro Pruebas Saber 5 -- 2016
Simulacro Pruebas Saber 5 -- 2016
 
Brochure gonflables 0315
Brochure gonflables   0315Brochure gonflables   0315
Brochure gonflables 0315
 
An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...
An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...
An Analysis of Scale and Technology in Rope Pump Piston Manufacture and Suppl...
 
Ballard score.. - Dr Padmesh - Neonatology
Ballard score..  - Dr Padmesh - NeonatologyBallard score..  - Dr Padmesh - Neonatology
Ballard score.. - Dr Padmesh - Neonatology
 
Perinatal infections- Diagnosis & Management - Dr Padmesh - Neonatology
Perinatal infections- Diagnosis & Management  - Dr Padmesh - NeonatologyPerinatal infections- Diagnosis & Management  - Dr Padmesh - Neonatology
Perinatal infections- Diagnosis & Management - Dr Padmesh - Neonatology
 
Bone marrow transplant
Bone marrow transplantBone marrow transplant
Bone marrow transplant
 

Similar to HelloGit

Gitflow - Clouddictive
Gitflow   - ClouddictiveGitflow   - Clouddictive
Gitflow - Clouddictive
Clouddictive
 
Git Workflows
Git WorkflowsGit Workflows
Git Workflows
Noam Kfir
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Michael Lihs
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategiesrahulbot
 
An intro to git
An intro to gitAn intro to git
An intro to git
Dan Shrader
 
Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010
Pursuit Consulting
 
Embracing Distributed Version Control
Embracing Distributed Version ControlEmbracing Distributed Version Control
Embracing Distributed Version ControlNowell Strite
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
David Paluy
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
Betclic Everest Group Tech Team
 
git Technologies
git Technologiesgit Technologies
git Technologies
Hirantha Pradeep
 
Git basics, Team Workflows (Ciro Miranda)
Git basics, Team Workflows (Ciro Miranda)Git basics, Team Workflows (Ciro Miranda)
Git basics, Team Workflows (Ciro Miranda)
Ciro Miranda
 
01 - Git vs SVN
01 - Git vs SVN01 - Git vs SVN
01 - Git vs SVN
Edward Goikhman
 
Working with Git
Working with GitWorking with Git
Working with Git
Tony Hillerson
 
Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPress
Josh Lee
 
Luis atencio on_git
Luis atencio on_gitLuis atencio on_git
Luis atencio on_git
Luis Atencio
 
GIT In Detail
GIT In DetailGIT In Detail
GIT In Detail
Haitham Raik
 
Managing changes to eZPublish Database
Managing changes to eZPublish DatabaseManaging changes to eZPublish Database
Managing changes to eZPublish Database
Gaetano Giunta
 
Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...
eZ Systems
 
An introduction to Git and GitFlow
An introduction to Git and GitFlowAn introduction to Git and GitFlow
An introduction to Git and GitFlow
Mark Everard
 
Beginner's Guide to Version Control with Git
Beginner's Guide to Version Control with GitBeginner's Guide to Version Control with Git
Beginner's Guide to Version Control with GitRobert Lee-Cann
 

Similar to HelloGit (20)

Gitflow - Clouddictive
Gitflow   - ClouddictiveGitflow   - Clouddictive
Gitflow - Clouddictive
 
Git Workflows
Git WorkflowsGit Workflows
Git Workflows
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies
 
An intro to git
An intro to gitAn intro to git
An intro to git
 
Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010
 
Embracing Distributed Version Control
Embracing Distributed Version ControlEmbracing Distributed Version Control
Embracing Distributed Version Control
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
git Technologies
git Technologiesgit Technologies
git Technologies
 
Git basics, Team Workflows (Ciro Miranda)
Git basics, Team Workflows (Ciro Miranda)Git basics, Team Workflows (Ciro Miranda)
Git basics, Team Workflows (Ciro Miranda)
 
01 - Git vs SVN
01 - Git vs SVN01 - Git vs SVN
01 - Git vs SVN
 
Working with Git
Working with GitWorking with Git
Working with Git
 
Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPress
 
Luis atencio on_git
Luis atencio on_gitLuis atencio on_git
Luis atencio on_git
 
GIT In Detail
GIT In DetailGIT In Detail
GIT In Detail
 
Managing changes to eZPublish Database
Managing changes to eZPublish DatabaseManaging changes to eZPublish Database
Managing changes to eZPublish Database
 
Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...
 
An introduction to Git and GitFlow
An introduction to Git and GitFlowAn introduction to Git and GitFlow
An introduction to Git and GitFlow
 
Beginner's Guide to Version Control with Git
Beginner's Guide to Version Control with GitBeginner's Guide to Version Control with Git
Beginner's Guide to Version Control with Git
 

More from Jason Hanson

Reinvent yourself - How to become a native iOS developer in nine steps
Reinvent yourself - How to become a native iOS developer in nine stepsReinvent yourself - How to become a native iOS developer in nine steps
Reinvent yourself - How to become a native iOS developer in nine steps
Jason Hanson
 
Mobile Flex - Flash Camp St. Louis
Mobile Flex - Flash Camp St. LouisMobile Flex - Flash Camp St. Louis
Mobile Flex - Flash Camp St. Louis
Jason Hanson
 
OO JS for AS3 Devs
OO JS for AS3 DevsOO JS for AS3 Devs
OO JS for AS3 DevsJason Hanson
 
Maximizing Code Reuse Across Screens
Maximizing Code Reuse Across ScreensMaximizing Code Reuse Across Screens
Maximizing Code Reuse Across Screens
Jason Hanson
 
Deep Dive into Flex Mobile Item Renderers
Deep Dive into Flex Mobile Item RenderersDeep Dive into Flex Mobile Item Renderers
Deep Dive into Flex Mobile Item Renderers
Jason Hanson
 
Burrito and Hero
Burrito and HeroBurrito and Hero
Burrito and Hero
Jason Hanson
 

More from Jason Hanson (6)

Reinvent yourself - How to become a native iOS developer in nine steps
Reinvent yourself - How to become a native iOS developer in nine stepsReinvent yourself - How to become a native iOS developer in nine steps
Reinvent yourself - How to become a native iOS developer in nine steps
 
Mobile Flex - Flash Camp St. Louis
Mobile Flex - Flash Camp St. LouisMobile Flex - Flash Camp St. Louis
Mobile Flex - Flash Camp St. Louis
 
OO JS for AS3 Devs
OO JS for AS3 DevsOO JS for AS3 Devs
OO JS for AS3 Devs
 
Maximizing Code Reuse Across Screens
Maximizing Code Reuse Across ScreensMaximizing Code Reuse Across Screens
Maximizing Code Reuse Across Screens
 
Deep Dive into Flex Mobile Item Renderers
Deep Dive into Flex Mobile Item RenderersDeep Dive into Flex Mobile Item Renderers
Deep Dive into Flex Mobile Item Renderers
 
Burrito and Hero
Burrito and HeroBurrito and Hero
Burrito and Hero
 

HelloGit

  • 1. Distributed Revision Control / Branching & Workflow Model Hello Git / Git Flow Jason Hanson @jayfour000
  • 2. Credit & Reference ❖ https://www.atlassian.com/git/tutorials/comparing- workflows/gitflow-workflow ❖ http://nvie.com/posts/a-successful-git-branching-model/
  • 4. Why Revision Control? ❖ Code is complicated and changes over time ❖ I make mistakes in my code ❖ YOU make mistakes in my code! ❖ Takes longer than one day to write software ❖ Software lives longer than my hard drive
  • 5. Wait. What? Hello World Goodbye World Hello Jason Goodbye Jason
  • 6. Distributed Revision Control Options ❖ Mercurial ❖ Microsoft Visual SourceSafe ❖ CVS ❖ SVN ❖ Git
  • 7. Hello Git ❖ Developed by Linus Torvalds for Linux kernel development in 2005 ❖ Every working directory is a full repository ❖ Unlike CSV, SVN, etc ❖ More power ❖ Useful for 1 person teams too
  • 8. local vs origin ❖ checkout from origin to local ❖ commit changes to local ❖ push from local to origin ❖ pull from origin to local Note: Git can be used local only too
  • 9. branch ❖ A branch represents an independent line of development. ❖ Branches serve as an abstraction for the edit/stage/commit process ❖ I think of them as branches of a tree ❖ New commits are recorded in the history for the current branch
  • 10. Tools ❖ Terminal ❖ SourceTree ❖ Git Tower ❖ IntelliJ IDEs (WebStorm, AppCode, Android Studio, IDEA) ❖ Others?
  • 11. Tools - Terminal ❖ PROS ❖ Free ❖ Simple ❖ Powerful - do all the things ❖ CONS ❖ Memorize commands ❖ Lots of typing ❖ Not friendly
  • 12. Tools - SourceTree ❖ PROS ❖ Free ❖ Powerful ❖ Large user base ❖ CONS ❖ Overwhelming # of options ❖ Crashes 20+ times a day!
  • 13. Tools - Git Tower ❖ PROS ❖ Easy to use ❖ Good UX ❖ Does not crash ❖ Cool logo ❖ CONS ❖ Can’t do every command ❖ Cost $60
  • 14. Tools - Alt Options ❖ Comfort level ❖ What do you use?
  • 15.
  • 16.
  • 18. Gitflow Origins ❖ Vincent Driessen ❖ Blog post Jan, 2010 ❖ Today is widely used ❖ Built into SourceTree ❖ Built into Tower 2 ❖ Supported by Atlassian
  • 19. Gitflow - Overview ❖ Strict branching model ❖ Suports multiple concurrent releases ❖ Robust workflow for larger projects
  • 20. Gitflow - Workflow ❖ Central repository (origin) ❖ Dev work locally (local) and push branches to central repository (origin)
  • 22. master ❖ The master branch stores the official release history ❖ Tag created for version number merges ❖ HEAD always reflects a production-ready state ❖ Should be able to promote HEAD of master to production at any time
  • 24. develop ❖ Integration branch for features ❖ QA works off develop ❖ develop is merged into master at certain milestones
  • 26. feature/* ❖ Each new feature should reside in its own branch ❖ feature branches use develop as their parent branch ❖ When a feature is complete, it gets merged back into develop ❖ feature branches should never interact directly with master.
  • 27. feature/* - many branches
  • 29. release/* ❖ Once develop has acquired enough features for a release, you fork a release branch off of develop. ❖ No new features can be added after this point—only bug fixes, ❖ Once it's ready to ship, the release gets merged into master ❖ tag with a version number. ❖ merge release back into develop, which may have progressed since the release was created
  • 31. hotfix/* ❖ hotfix branches are used to quickly patch production releases ❖ Only hotfix branch should fork directly off of master ❖ As soon as the fix is complete, it should be merged into both master and develop ❖ master should be tagged with an updated version number. ❖ Having a dedicated line of development for bug fixes lets your team address issues without interrupting the rest of the workflow or waiting for the next release cycle.

Editor's Notes

  1. Welcome everyone. My name is Jason Hanson and I am going to talk a little bit about git. Feel free to ask questions during the talk. I am going to talk about bit about Git, spend some time on GitFlow and then have an open discussion
  2. How many have used source control before? How many have used Git?
  3. Git always has on older version
  4. Example of what git history might look like