SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Git-Flow
for Daily Use
Kevin Basarab
Twitter: @kBasarab
IRC: @kBasarab
Prereqs
● Git 101
● A multiple environment setup (Dev-Stage-Prod)
● Comfortable on the CLI
Benefits
● Parallel Development
● Collaboration
● Release Staging
● Support for Emergency fixes
Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html
What is Git-Flow
● At the core Git-flow is a branching and merging strategy
● GIT branches are cheap, merges are easy
● Other systems: Each branch is a complete replication of codebase
Branching 101
> git branch -a;
develop
new_branch
*develop
master
remotes/origin/master
remotes/origin/develop
> git checkout -b new_branch
Switched to a new branch 'new_branch'
> git branch
develop
...
*new_branch
> git branch test_2
Merging 101
> git checkout develop;
Switched to branch 'develop'
> git merge new_branch
● Master Branch
○ The production site codebase
● Develop Branch
○ All code ready for production on a staging environment
● Feature
○ Active code development. Usually related to one ticket.
● Release
○ Integration branch to test develop merging into master
● Hotfix
○ Emergency fix to the production site
Terminology
Visualize Git-Flow
Source: http://nvie.com/posts/a-successful-git-branching-model/
Visualize Git-Flow
Source: http://nvie.com/posts/a-successful-git-branching-model/
Visualize Git-Flow
Source: http://nvie.com/posts/a-successful-git-branching-model/
Visualize Git-Flow
Source: http://nvie.com/posts/a-successful-git-branching-model/
Source: http://bit.ly/10iUTKK
Scenario
● Start using git-flow on a basic git repo
● Roll code based on a ticket
● Have a peer code review or help build functionality.
● Release this to production
● We had a misspelling, fix on production
Setup Git-Flow
● Install git-flow locally.
○ https://github.com/nvie/gitflow/wiki/Mac-OS-X
○ https://github.com/nvie/gitflow/wiki/Linux
○ https://github.com/nvie/gitflow/wiki/Windows
> git status
# On branch master
nothing to commit (working directory clean)
> git-flow init
Which branch should be used for bringing forth production releases?
- master
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
> git checkout develop
Create feature
> git branch
* develop
master
> git-flow feature start 1234-78900-Add-Feature
Switched to a new branch 'feature/1234-78900-Add-Feature'
Summary of actions:
- A new branch 'feature/1234-78900-Add-Feature' was created, based on
'develop'
- You are now on branch 'feature/1234-78900-Add-Feature'
Now, start committing on your feature. When done, use:
git flow feature finish 1234-78900-Add-Feature
> git-flow feature publish 1234-78900-Add-Feature
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: kbasarab is allowed. accepted payload.
To test.git
* [new branch] feature/1234-78900-Add-Feature -> feature/1234-
78900-Add-Feature
Already on 'feature/1234-78900-Add-Feature'
Summary of actions:
- A new remote branch 'feature/1234-78900-Add-Feature' was created
- The local branch 'feature/1234-78900-Add-Feature' was configured to
track the remote branch
- You are now on branch 'feature/1234-78900-Add-Feature'
Publish feature
# Another user on another computer:
> git fetch
> git checkout feature/1234-78900-Add-Feature
...
> git fetch; git rebase origin/feature/1234-78900-Add-Feature
...
> git push origin feature/1234-78900-Add-Feature
> git-flow feature finish 1234-78900-Add-Feature
Switched to branch 'develop'
Already up-to-date.
Deleted branch feature/1234-78900-Add-Feature (was f135b69).
Summary of actions:
- The feature branch 'feature/1234-78900-Add-Feature' was merged into
'develop'
- Feature branch 'feature/1234-78900-Add-Feature' has been removed
- You are now on branch 'develop'
Finish feature
> git push origin develop
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: kbasarab is allowed. accepted payload.
To test.git
f22f2d0..f135b69 develop -> develop
> git push origin :feature/1234-78900-Add-Feature
remote: bb/acl: kbasarab is allowed. accepted payload.
To test.git
- [deleted] feature/1234-78900-Add-Feature
> git-flow release start 2013-03-14.0
Switched to a new branch 'release/2013-03-14.0'
Summary of actions:
- A new branch 'release/2013-03-14.0' was created, based on 'develop'
- You are now on branch 'release/2013-03-14.0'
Follow-up actions:
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
- When done, run:
git flow release finish '2013-03-14.0'
Create release
> git push origin release/2013-03-14.0
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: kbasarab is allowed. accepted payload.
To test.git
* [new branch] release/2013-03-14.0 -> release/2013-03-14.0
> git-flow release finish 2013-03-14.0
Switched to branch 'master'
Merge made by the 'recursive' strategy.
example.txt | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
Deleted branch release/2013-03-14.0 (was f135b69).
Summary of actions:
- Latest objects have been fetched from 'origin'
- Release branch has been merged into 'master'
- The release was tagged '2013-03-14.0'
- Release branch has been back-merged into 'develop'
- Release branch 'release/2013-03-14.0' has been deleted
> git push origin :release/2013-03-14.0
remote: bb/acl: kbasarab is allowed. accepted payload.
To test.git
- [deleted] release/2013-03-14.0
Finish release
> git push --tags
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 352 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
remote: bb/acl: kbasarab is allowed. accepted payload.
To test.git
* [new tag] 2013-03-14.0 -> 2013-03-14.0
Finish release
> git-flow hotfix start 2013-03-17.0
Switched to a new branch 'hotfix/2013-03-17.0'
Summary of actions:
- A new branch 'hotfix/2013-03-17.0' was created, based on 'master'
- You are now on branch 'hotfix/2013-03-17.0'
Follow-up actions:
- Bump the version number now!
- Start committing your hot fixes
- When done, run:
git flow hotfix finish '2013-03-17.0'
> ... Commits
> git-flow hotfix finish 2013-03-17.0
> git push origin master
> git push --tags
Hotfix
● http://www.mediacurrent.com/blog/webinar-git-intro
● http://nvie.com/posts/a-successful-git-branching-model/
● http://datasift.github.com/gitflow/IntroducingGitFlow.html
Resources
Thank You!
Questions
Twitter: @kBasarab
IRC: @kBasarab

Mais conteúdo relacionado

Mais procurados

A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
abodeltae
 

Mais procurados (20)

Git training v10
Git training v10Git training v10
Git training v10
 
Git workflows presentation
Git workflows presentationGit workflows presentation
Git workflows presentation
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
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
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Learning git
Learning gitLearning git
Learning git
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Git basics
Git basicsGit basics
Git basics
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git slides
Git slidesGit slides
Git slides
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams
 
Git basic
Git basicGit basic
Git basic
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git n git hub
Git n git hubGit n git hub
Git n git hub
 
Git
GitGit
Git
 
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
 

Destaque

Git Workflow With Gitflow
Git Workflow With GitflowGit Workflow With Gitflow
Git Workflow With Gitflow
Josh Dvir
 

Destaque (19)

git flow
git flowgit flow
git flow
 
Git Workflow With Gitflow
Git Workflow With GitflowGit Workflow With Gitflow
Git Workflow With Gitflow
 
DcATL 2013: Git-Flow for Daily Use
DcATL 2013: Git-Flow for Daily UseDcATL 2013: Git-Flow for Daily Use
DcATL 2013: Git-Flow for Daily Use
 
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
 
Pull Request (PR): A git workflow
Pull Request (PR): A git workflow Pull Request (PR): A git workflow
Pull Request (PR): A git workflow
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
Desbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagemDesbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagem
 
Git in Continuous Deployment
Git in Continuous DeploymentGit in Continuous Deployment
Git in Continuous Deployment
 
Esqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadeEsqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdade
 
Git Flow: un processus de développement Agile
Git Flow: un processus de développement AgileGit Flow: un processus de développement Agile
Git Flow: un processus de développement Agile
 
GNU AS簡介
GNU AS簡介GNU AS簡介
GNU AS簡介
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Git branching-model
Git branching-modelGit branching-model
Git branching-model
 
A successful git branching model 導讀
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀
 
Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
Jira as a Tool for Test Management
Jira as a Tool for Test ManagementJira as a Tool for Test Management
Jira as a Tool for Test Management
 
Git workflows
Git workflowsGit workflows
Git workflows
 
[系列活動] 機器學習速遊
[系列活動] 機器學習速遊[系列活動] 機器學習速遊
[系列活動] 機器學習速遊
 

Semelhante a Git flow for daily use

Introduction of Git
Introduction of GitIntroduction of Git
Introduction of Git
Wayne Chen
 
Checkitmobile advanced git
Checkitmobile advanced gitCheckitmobile advanced git
Checkitmobile advanced git
Gerrit Wanderer
 
Checkitmobile - using Git for development
Checkitmobile - using Git for developmentCheckitmobile - using Git for development
Checkitmobile - using Git for development
Gerrit Wanderer
 
Git Developer Cheatsheet
Git Developer CheatsheetGit Developer Cheatsheet
Git Developer Cheatsheet
Abdul Basit
 
Git tech talk
Git tech talkGit tech talk
Git tech talk
razasayed
 

Semelhante a Git flow for daily use (20)

Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Gitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de BranchesGitflow - Una metología para manejo de Branches
Gitflow - Una metología para manejo de Branches
 
Pro git - grasping it conceptually
Pro git - grasping it conceptuallyPro git - grasping it conceptually
Pro git - grasping it conceptually
 
Git workflows automat-it
Git workflows automat-itGit workflows automat-it
Git workflows automat-it
 
Switching to Git
Switching to GitSwitching to Git
Switching to Git
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of Git
 
Checkitmobile advanced git
Checkitmobile advanced gitCheckitmobile advanced git
Checkitmobile advanced git
 
Honestly Git Playground 20190221
Honestly Git Playground 20190221Honestly Git Playground 20190221
Honestly Git Playground 20190221
 
Checkitmobile - using Git for development
Checkitmobile - using Git for developmentCheckitmobile - using Git for development
Checkitmobile - using Git for development
 
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
 
git Technologies
git Technologiesgit Technologies
git Technologies
 
Git github
Git githubGit github
Git github
 
GIT in a nutshell
GIT in a nutshellGIT in a nutshell
GIT in a nutshell
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git flow - how to
Git flow - how toGit flow - how to
Git flow - how to
 
Git and GitHub workflows
Git and GitHub workflowsGit and GitHub workflows
Git and GitHub workflows
 
Git Developer Cheatsheet
Git Developer CheatsheetGit Developer Cheatsheet
Git Developer Cheatsheet
 
Git tech talk
Git tech talkGit tech talk
Git tech talk
 
Git Intermediate Course
Git Intermediate CourseGit Intermediate Course
Git Intermediate Course
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 

Mais de Mediacurrent

Mais de Mediacurrent (20)

Penn State News: Pivoting to Decoupled Drupal with Gatsby
Penn State News: Pivoting to Decoupled Drupal with GatsbyPenn State News: Pivoting to Decoupled Drupal with Gatsby
Penn State News: Pivoting to Decoupled Drupal with Gatsby
 
Evolving How We Measure Digital Success in Higher Ed
Evolving How We Measure Digital Success in Higher EdEvolving How We Measure Digital Success in Higher Ed
Evolving How We Measure Digital Success in Higher Ed
 
Penn State scales static Drupal to new heights
Penn State scales static Drupal to new heightsPenn State scales static Drupal to new heights
Penn State scales static Drupal to new heights
 
Delivering Meaningful Digital Experiences in Higher Ed
Delivering Meaningful Digital Experiences in Higher EdDelivering Meaningful Digital Experiences in Higher Ed
Delivering Meaningful Digital Experiences in Higher Ed
 
Content Strategy: Building Connections with Your Audience
Content Strategy: Building Connections with Your AudienceContent Strategy: Building Connections with Your Audience
Content Strategy: Building Connections with Your Audience
 
Decoupled Drupal and Gatsby in the Real World
Decoupled Drupal and Gatsby in the Real WorldDecoupled Drupal and Gatsby in the Real World
Decoupled Drupal and Gatsby in the Real World
 
A Better Way to Build and Manage Sites with Rain for Drupal 9
A Better Way to Build and Manage Sites with Rain for Drupal 9A Better Way to Build and Manage Sites with Rain for Drupal 9
A Better Way to Build and Manage Sites with Rain for Drupal 9
 
Drupal Security: What You Need to Know
Drupal Security: What You Need to KnowDrupal Security: What You Need to Know
Drupal Security: What You Need to Know
 
Leveraging Design Systems to Streamline Web Projects
Leveraging Design Systems to Streamline Web ProjectsLeveraging Design Systems to Streamline Web Projects
Leveraging Design Systems to Streamline Web Projects
 
Reimagining Your Higher Ed Web Strategy
Reimagining Your Higher Ed Web StrategyReimagining Your Higher Ed Web Strategy
Reimagining Your Higher Ed Web Strategy
 
How to Digitally Transform Higher Ed with Drupal
How to Digitally Transform Higher Ed with DrupalHow to Digitally Transform Higher Ed with Drupal
How to Digitally Transform Higher Ed with Drupal
 
Is my website accessible? Common mistakes (and how to fix them)
Is my website accessible? Common mistakes (and how to fix them)Is my website accessible? Common mistakes (and how to fix them)
Is my website accessible? Common mistakes (and how to fix them)
 
Managing Images In Large Scale Drupal 8 & 9 Websites
Managing Images In Large Scale Drupal 8 & 9 WebsitesManaging Images In Large Scale Drupal 8 & 9 Websites
Managing Images In Large Scale Drupal 8 & 9 Websites
 
Paragraphs v Layout Builder - The Final Showdown
Paragraphs v Layout Builder - The Final ShowdownParagraphs v Layout Builder - The Final Showdown
Paragraphs v Layout Builder - The Final Showdown
 
MagMutual.com: On the JAMStack with Gatsby and Drupal 8
 MagMutual.com: On the JAMStack with Gatsby and Drupal 8 MagMutual.com: On the JAMStack with Gatsby and Drupal 8
MagMutual.com: On the JAMStack with Gatsby and Drupal 8
 
Creating an Organizational Culture of Giving Back to Drupal
Creating an Organizational Culture of Giving Back to DrupalCreating an Organizational Culture of Giving Back to Drupal
Creating an Organizational Culture of Giving Back to Drupal
 
Level Up Your Team: Front-End Development Best Practices
Level Up Your Team: Front-End Development Best PracticesLevel Up Your Team: Front-End Development Best Practices
Level Up Your Team: Front-End Development Best Practices
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9
 
How to Prove Marketing ROI: Overcoming Digital Marketing Challenges
How to Prove Marketing ROI: Overcoming Digital Marketing ChallengesHow to Prove Marketing ROI: Overcoming Digital Marketing Challenges
How to Prove Marketing ROI: Overcoming Digital Marketing Challenges
 
Prepare Your Drupal 9 Action Plan
Prepare Your Drupal 9 Action Plan Prepare Your Drupal 9 Action Plan
Prepare Your Drupal 9 Action Plan
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Git flow for daily use

  • 1. Git-Flow for Daily Use Kevin Basarab Twitter: @kBasarab IRC: @kBasarab
  • 2. Prereqs ● Git 101 ● A multiple environment setup (Dev-Stage-Prod) ● Comfortable on the CLI
  • 3. Benefits ● Parallel Development ● Collaboration ● Release Staging ● Support for Emergency fixes Source: http://datasift.github.com/gitflow/IntroducingGitFlow.html
  • 4. What is Git-Flow ● At the core Git-flow is a branching and merging strategy ● GIT branches are cheap, merges are easy ● Other systems: Each branch is a complete replication of codebase
  • 5. Branching 101 > git branch -a; develop new_branch *develop master remotes/origin/master remotes/origin/develop > git checkout -b new_branch Switched to a new branch 'new_branch' > git branch develop ... *new_branch > git branch test_2
  • 6. Merging 101 > git checkout develop; Switched to branch 'develop' > git merge new_branch
  • 7. ● Master Branch ○ The production site codebase ● Develop Branch ○ All code ready for production on a staging environment ● Feature ○ Active code development. Usually related to one ticket. ● Release ○ Integration branch to test develop merging into master ● Hotfix ○ Emergency fix to the production site Terminology
  • 13. Scenario ● Start using git-flow on a basic git repo ● Roll code based on a ticket ● Have a peer code review or help build functionality. ● Release this to production ● We had a misspelling, fix on production
  • 14. Setup Git-Flow ● Install git-flow locally. ○ https://github.com/nvie/gitflow/wiki/Mac-OS-X ○ https://github.com/nvie/gitflow/wiki/Linux ○ https://github.com/nvie/gitflow/wiki/Windows > git status # On branch master nothing to commit (working directory clean) > git-flow init Which branch should be used for bringing forth production releases? - master Branch name for production releases: [master] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? []
  • 15. > git checkout develop Create feature > git branch * develop master > git-flow feature start 1234-78900-Add-Feature Switched to a new branch 'feature/1234-78900-Add-Feature' Summary of actions: - A new branch 'feature/1234-78900-Add-Feature' was created, based on 'develop' - You are now on branch 'feature/1234-78900-Add-Feature' Now, start committing on your feature. When done, use: git flow feature finish 1234-78900-Add-Feature
  • 16. > git-flow feature publish 1234-78900-Add-Feature Total 0 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git * [new branch] feature/1234-78900-Add-Feature -> feature/1234- 78900-Add-Feature Already on 'feature/1234-78900-Add-Feature' Summary of actions: - A new remote branch 'feature/1234-78900-Add-Feature' was created - The local branch 'feature/1234-78900-Add-Feature' was configured to track the remote branch - You are now on branch 'feature/1234-78900-Add-Feature' Publish feature # Another user on another computer: > git fetch > git checkout feature/1234-78900-Add-Feature ... > git fetch; git rebase origin/feature/1234-78900-Add-Feature ... > git push origin feature/1234-78900-Add-Feature
  • 17. > git-flow feature finish 1234-78900-Add-Feature Switched to branch 'develop' Already up-to-date. Deleted branch feature/1234-78900-Add-Feature (was f135b69). Summary of actions: - The feature branch 'feature/1234-78900-Add-Feature' was merged into 'develop' - Feature branch 'feature/1234-78900-Add-Feature' has been removed - You are now on branch 'develop' Finish feature > git push origin develop Total 0 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git f22f2d0..f135b69 develop -> develop > git push origin :feature/1234-78900-Add-Feature remote: bb/acl: kbasarab is allowed. accepted payload. To test.git - [deleted] feature/1234-78900-Add-Feature
  • 18. > git-flow release start 2013-03-14.0 Switched to a new branch 'release/2013-03-14.0' Summary of actions: - A new branch 'release/2013-03-14.0' was created, based on 'develop' - You are now on branch 'release/2013-03-14.0' Follow-up actions: - Bump the version number now! - Start committing last-minute fixes in preparing your release - When done, run: git flow release finish '2013-03-14.0' Create release > git push origin release/2013-03-14.0 Total 0 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git * [new branch] release/2013-03-14.0 -> release/2013-03-14.0
  • 19. > git-flow release finish 2013-03-14.0 Switched to branch 'master' Merge made by the 'recursive' strategy. example.txt | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) Deleted branch release/2013-03-14.0 (was f135b69). Summary of actions: - Latest objects have been fetched from 'origin' - Release branch has been merged into 'master' - The release was tagged '2013-03-14.0' - Release branch has been back-merged into 'develop' - Release branch 'release/2013-03-14.0' has been deleted > git push origin :release/2013-03-14.0 remote: bb/acl: kbasarab is allowed. accepted payload. To test.git - [deleted] release/2013-03-14.0 Finish release
  • 20. > git push --tags Counting objects: 2, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 352 bytes, done. Total 2 (delta 0), reused 0 (delta 0) remote: bb/acl: kbasarab is allowed. accepted payload. To test.git * [new tag] 2013-03-14.0 -> 2013-03-14.0 Finish release
  • 21. > git-flow hotfix start 2013-03-17.0 Switched to a new branch 'hotfix/2013-03-17.0' Summary of actions: - A new branch 'hotfix/2013-03-17.0' was created, based on 'master' - You are now on branch 'hotfix/2013-03-17.0' Follow-up actions: - Bump the version number now! - Start committing your hot fixes - When done, run: git flow hotfix finish '2013-03-17.0' > ... Commits > git-flow hotfix finish 2013-03-17.0 > git push origin master > git push --tags Hotfix