SlideShare a Scribd company logo
1 of 31
Download to read offline
Managing releases effectively through Git
- By Mohd Farid
Agenda
● Git branching support
● Why branching strategy?
● Introducing git-flow
● Different branches for different purposes
● Different Workfows while using git-flow
Git branching support
● Git allows us to create multiple branches.
● Merge any branch into another.
● Pull changes from any branch to any branch.
Note: With great power comes great responsibilities
Why do I need a branching
strategy?
Git branching strategy - Why it is important ?
Frequent overwriting of my commits by this guy.
Git branching strategy - Why it is important ?
Difficult to debug what went wrong from the clumsy tree
structure.
Git branching strategy - Why it is important ?
Situation goes out of control: We call the experts …
and they do things like..
git reset HEAD
git reset HARD
and .. evil
Our hearts start beating faster and faster… with each
command they type !!!
Git branching strategy - Why it is important ?
We always have a stable branch ready to be deployed to
production.
But before we solve it, lets see,
how things go wrong…
The good, The bad and the ugly
The Good - Single developer days
The Bad - Two developers on the project
The Ugly - Multiple developer days..
It definitely needs a genius (+ time) to decipher this tree.
What is the way out from this
….. life ?
Lets meet a branching strategy.. Git-flow
Git-flow is a way to manage our code such that:
● There are no code overrides by my colleague.
● If something goes wrong, I can easily figure out which
commit failed by referring to a very simple tree.
Lets meet a branching strategy.. Git-flow
Ques:
Do I need to learn new set of commands for this
Ans:
NO, We just need to be follow a simple process and
everything will fall in place.
Most frequently used commands
git pull origin development
git checkout -b branchName
git commit -am “Commit message”
git merge --no-ff feature-branch
git rebase
git branch -d
git push origin development
What is git-flow
What are these different kind of branches
● development branch
● feature branch
● release branch
● master branch
● hotfix branch
Branches
Merging a feature branch into development
1. git checkout development
2. git checkout -b JIRA-103
3. work on the feature.
4. commit your changes to the branch.
5. git checkout development
6. git pull origin development
7. if no new changes are received in the pull
8. git merge --no-ff JIRA-103
9. git push origin development
10. git branch -d JIRA-103
Merging a feature branch into development
1. ….
2. if some new changes are received in the pull
3. git checkout JIRA-103
4. git rebase development // Rebasing the current branch (JIRA-
103) with development
5. git checkout development
6. git merge --no-ff JIRA-103
7. git push origin development
8. git branch -d JIRA-103
Work flow 1: Working on a feature
1. git checkout development
2. git checkout -b JIRA-103
3. work on the feature.
4. commit your changes to the branch.
5. git checkout development
6. git pull origin development
7. if there are no new changes recieved in the pull
8. git merge --no-ff JIRA-103
9. git push origin development
Work flow 1: Working on a feature
1. ...
2. git checkout development
3. git pull origin development
4. if there are some new changes received in the pull
5. git checkout JIRA-103
6. git rebase development
7. git checkout development
8. git merge --no-ff JIRA-103
9. git push origin development
Workflow 2: Releasing to production
1. git checkout development
2. git checkout -b release-2.1
3. up the application version and commit this change.
4. git push origin release-2.1
5. test the release branch on staging environment
6. if there are any issues, fix them only on release branch
7. once satisfied, git checkout master
8. git merge --no-ff release-2.1
9. git tag v2.1
10. git push origin master
Workflow 2: Releasing to production
...
once satisfied with release-2.1
git checkout master
git merge --no-ff release-2.1
git tag v2.1
git push origin master
git push --tags
deploy the master branch to production.
Workflow 3: Addressing the Production issues:
Hotfix branch
Once the master has been deployed to production and there is some issue
on production.
1. git checkout master
2. git checkout -b hot-fix-2.1.1
3. increase the application version.
4. fix the issue and commit the changes.
Merge the hotfix branch on master & development *(if there is no
active release branch. If there is one then merge it on master and the
active release branch. )
Workflow 3: Addressing the Production issues:
Hotfix branch
Merging the hotfix branch on master..
1. git checkout master
2. git pull origin master
3. if there are no new changes:
4. git merge --no-ff hotfix-2.1.1
5. git push origin master
6. git branch -d hotfix-2.1.1
if there are changes in master then rebase the hotfix and then merge
Workflow 3: Addressing the Production issues:
Hotfix branch
Merging the hotfix branch on development..
1. git checkout development
2. git pull origin development
3. if there are no new changes:
4. git merge --no-ff hotfix-2.1.1
5. git push origin development
6. git branch -d hotfix-2.1.1
if there are changes in development then rebase the hotfix and then
merge
Few rules that worked for us..
● Never pull on one branch from another. In order to get those changes,
we do a rebase.
● Delete the feature branches, release branches and hotfix branches
once they are merged into the desired branch/es
● Never commit again on a branch which has already been merged into
the destination branch.
● Use feature branch names like ticket numbers, they help in quickly
identifying the purpose of the branch.
Must read..
http://nvie.com/posts/a-successful-git-branching-model/
Questions

More Related Content

What's hot

Github, Travis-CI and Perl
Github, Travis-CI and PerlGithub, Travis-CI and Perl
Github, Travis-CI and PerlDave Cross
 
Continuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyreContinuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyreSpark Summit
 
Git for Beginners
Git for BeginnersGit for Beginners
Git for BeginnersRick Umali
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsLuca Milanesio
 
It's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxIt's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxStefan Lay
 
Beyond Agile: Conversational Development
Beyond Agile: Conversational DevelopmentBeyond Agile: Conversational Development
Beyond Agile: Conversational Development🌍 Job van der Voort
 
Open Source Monitoring in 2019
Open Source Monitoring in 2019 Open Source Monitoring in 2019
Open Source Monitoring in 2019 Kris Buytaert
 
GitLab webcast - Release 8.4
GitLab webcast - Release 8.4GitLab webcast - Release 8.4
GitLab webcast - Release 8.4GitLab, Inc
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialHeather McNamee
 
Remote and Open: How GitLab functions (presentation at Landing.careers)
Remote and Open: How GitLab functions (presentation at Landing.careers)Remote and Open: How GitLab functions (presentation at Landing.careers)
Remote and Open: How GitLab functions (presentation at Landing.careers)🌍 Job van der Voort
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingKatie Chin
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOpsEficode
 
Building New on Top of Old: The Argument for Simplicity
Building New on Top of Old: The Argument for SimplicityBuilding New on Top of Old: The Argument for Simplicity
Building New on Top of Old: The Argument for SimplicityNew Relic
 
How do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code ManagementHow do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code ManagementThoughtworks
 

What's hot (20)

Git Power Routines
Git Power RoutinesGit Power Routines
Git Power Routines
 
Github, Travis-CI and Perl
Github, Travis-CI and PerlGithub, Travis-CI and Perl
Github, Travis-CI and Perl
 
Continuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyreContinuous Integration for Spark Apps by Sean McIntyre
Continuous Integration for Spark Apps by Sean McIntyre
 
Beyond QA
Beyond QABeyond QA
Beyond QA
 
Git for Beginners
Git for BeginnersGit for Beginners
Git for Beginners
 
plone.api
plone.apiplone.api
plone.api
 
Development tools
Development toolsDevelopment tools
Development tools
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
 
Conversational Development
Conversational DevelopmentConversational Development
Conversational Development
 
It's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxIt's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolbox
 
Beyond Agile: Conversational Development
Beyond Agile: Conversational DevelopmentBeyond Agile: Conversational Development
Beyond Agile: Conversational Development
 
Open Source Monitoring in 2019
Open Source Monitoring in 2019 Open Source Monitoring in 2019
Open Source Monitoring in 2019
 
GitLab webcast - Release 8.4
GitLab webcast - Release 8.4GitLab webcast - Release 8.4
GitLab webcast - Release 8.4
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorial
 
Remote and Open: How GitLab functions (presentation at Landing.careers)
Remote and Open: How GitLab functions (presentation at Landing.careers)Remote and Open: How GitLab functions (presentation at Landing.careers)
Remote and Open: How GitLab functions (presentation at Landing.careers)
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End Testing
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOps
 
Building New on Top of Old: The Argument for Simplicity
Building New on Top of Old: The Argument for SimplicityBuilding New on Top of Old: The Argument for Simplicity
Building New on Top of Old: The Argument for Simplicity
 
How do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code ManagementHow do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code Management
 
GitOps , done Right
GitOps , done RightGitOps , done Right
GitOps , done Right
 

Similar to Managing releases effectively through git

Git development workflow
Git development workflowGit development workflow
Git development workflowSankar Suda
 
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
 
Essential git for developers
Essential git for developersEssential git for developers
Essential git for developersAdam Culp
 
Git with the flow
Git with the flowGit with the flow
Git with the flowDana White
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practiceMajid Hosseini
 
Git - Simplified For Testers
Git - Simplified For TestersGit - Simplified For Testers
Git - Simplified For Testersupadhyay_25
 
Checkitmobile advanced git
Checkitmobile advanced gitCheckitmobile advanced git
Checkitmobile advanced gitGerrit Wanderer
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flowKnoldus Inc.
 
How to Really Get Git
How to Really Get GitHow to Really Get Git
How to Really Get GitSusan Tan
 
Checkitmobile - using Git for development
Checkitmobile - using Git for developmentCheckitmobile - using Git for development
Checkitmobile - using Git for developmentGerrit Wanderer
 
Introducing Git and git flow
Introducing Git and git flow Introducing Git and git flow
Introducing Git and git flow Sebin Benjamin
 
Improving your workflow with git
Improving your workflow with gitImproving your workflow with git
Improving your workflow with gitDídac Ríos
 
01 git interview questions & answers
01   git interview questions & answers01   git interview questions & answers
01 git interview questions & answersDeepQuest Software
 
Trunk based development for Beginners
Trunk based development for BeginnersTrunk based development for Beginners
Trunk based development for BeginnersNebulaworks
 

Similar to Managing releases effectively through git (20)

Git development workflow
Git development workflowGit development workflow
Git development workflow
 
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
 
Essential git for developers
Essential git for developersEssential git for developers
Essential git for developers
 
Git with the flow
Git with the flowGit with the flow
Git with the flow
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Git - Simplified For Testers
Git - Simplified For TestersGit - Simplified For Testers
Git - Simplified For Testers
 
Checkitmobile advanced git
Checkitmobile advanced gitCheckitmobile advanced git
Checkitmobile advanced git
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flow
 
How to Really Get Git
How to Really Get GitHow to Really Get Git
How to Really Get Git
 
Checkitmobile - using Git for development
Checkitmobile - using Git for developmentCheckitmobile - using Git for development
Checkitmobile - using Git for development
 
Introducing Git and git flow
Introducing Git and git flow Introducing Git and git flow
Introducing Git and git flow
 
Gn unify git
Gn unify gitGn unify git
Gn unify git
 
Improving your workflow with git
Improving your workflow with gitImproving your workflow with git
Improving your workflow with git
 
Git workshop
Git workshopGit workshop
Git workshop
 
git-flow R3Labs
git-flow R3Labsgit-flow R3Labs
git-flow R3Labs
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
01 git interview questions & answers
01   git interview questions & answers01   git interview questions & answers
01 git interview questions & answers
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
git Technologies
git Technologiesgit Technologies
git Technologies
 
Trunk based development for Beginners
Trunk based development for BeginnersTrunk based development for Beginners
Trunk based development for Beginners
 

Recently uploaded

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 

Recently uploaded (20)

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 

Managing releases effectively through git

  • 1. Managing releases effectively through Git - By Mohd Farid
  • 2. Agenda ● Git branching support ● Why branching strategy? ● Introducing git-flow ● Different branches for different purposes ● Different Workfows while using git-flow
  • 3. Git branching support ● Git allows us to create multiple branches. ● Merge any branch into another. ● Pull changes from any branch to any branch. Note: With great power comes great responsibilities
  • 4. Why do I need a branching strategy?
  • 5. Git branching strategy - Why it is important ? Frequent overwriting of my commits by this guy.
  • 6. Git branching strategy - Why it is important ? Difficult to debug what went wrong from the clumsy tree structure.
  • 7. Git branching strategy - Why it is important ? Situation goes out of control: We call the experts … and they do things like.. git reset HEAD git reset HARD and .. evil Our hearts start beating faster and faster… with each command they type !!!
  • 8. Git branching strategy - Why it is important ? We always have a stable branch ready to be deployed to production.
  • 9. But before we solve it, lets see, how things go wrong… The good, The bad and the ugly
  • 10. The Good - Single developer days
  • 11. The Bad - Two developers on the project
  • 12. The Ugly - Multiple developer days.. It definitely needs a genius (+ time) to decipher this tree.
  • 13. What is the way out from this ….. life ?
  • 14. Lets meet a branching strategy.. Git-flow Git-flow is a way to manage our code such that: ● There are no code overrides by my colleague. ● If something goes wrong, I can easily figure out which commit failed by referring to a very simple tree.
  • 15. Lets meet a branching strategy.. Git-flow Ques: Do I need to learn new set of commands for this Ans: NO, We just need to be follow a simple process and everything will fall in place.
  • 16. Most frequently used commands git pull origin development git checkout -b branchName git commit -am “Commit message” git merge --no-ff feature-branch git rebase git branch -d git push origin development
  • 18. What are these different kind of branches ● development branch ● feature branch ● release branch ● master branch ● hotfix branch
  • 20. Merging a feature branch into development 1. git checkout development 2. git checkout -b JIRA-103 3. work on the feature. 4. commit your changes to the branch. 5. git checkout development 6. git pull origin development 7. if no new changes are received in the pull 8. git merge --no-ff JIRA-103 9. git push origin development 10. git branch -d JIRA-103
  • 21. Merging a feature branch into development 1. …. 2. if some new changes are received in the pull 3. git checkout JIRA-103 4. git rebase development // Rebasing the current branch (JIRA- 103) with development 5. git checkout development 6. git merge --no-ff JIRA-103 7. git push origin development 8. git branch -d JIRA-103
  • 22. Work flow 1: Working on a feature 1. git checkout development 2. git checkout -b JIRA-103 3. work on the feature. 4. commit your changes to the branch. 5. git checkout development 6. git pull origin development 7. if there are no new changes recieved in the pull 8. git merge --no-ff JIRA-103 9. git push origin development
  • 23. Work flow 1: Working on a feature 1. ... 2. git checkout development 3. git pull origin development 4. if there are some new changes received in the pull 5. git checkout JIRA-103 6. git rebase development 7. git checkout development 8. git merge --no-ff JIRA-103 9. git push origin development
  • 24. Workflow 2: Releasing to production 1. git checkout development 2. git checkout -b release-2.1 3. up the application version and commit this change. 4. git push origin release-2.1 5. test the release branch on staging environment 6. if there are any issues, fix them only on release branch 7. once satisfied, git checkout master 8. git merge --no-ff release-2.1 9. git tag v2.1 10. git push origin master
  • 25. Workflow 2: Releasing to production ... once satisfied with release-2.1 git checkout master git merge --no-ff release-2.1 git tag v2.1 git push origin master git push --tags deploy the master branch to production.
  • 26. Workflow 3: Addressing the Production issues: Hotfix branch Once the master has been deployed to production and there is some issue on production. 1. git checkout master 2. git checkout -b hot-fix-2.1.1 3. increase the application version. 4. fix the issue and commit the changes. Merge the hotfix branch on master & development *(if there is no active release branch. If there is one then merge it on master and the active release branch. )
  • 27. Workflow 3: Addressing the Production issues: Hotfix branch Merging the hotfix branch on master.. 1. git checkout master 2. git pull origin master 3. if there are no new changes: 4. git merge --no-ff hotfix-2.1.1 5. git push origin master 6. git branch -d hotfix-2.1.1 if there are changes in master then rebase the hotfix and then merge
  • 28. Workflow 3: Addressing the Production issues: Hotfix branch Merging the hotfix branch on development.. 1. git checkout development 2. git pull origin development 3. if there are no new changes: 4. git merge --no-ff hotfix-2.1.1 5. git push origin development 6. git branch -d hotfix-2.1.1 if there are changes in development then rebase the hotfix and then merge
  • 29. Few rules that worked for us.. ● Never pull on one branch from another. In order to get those changes, we do a rebase. ● Delete the feature branches, release branches and hotfix branches once they are merged into the desired branch/es ● Never commit again on a branch which has already been merged into the destination branch. ● Use feature branch names like ticket numbers, they help in quickly identifying the purpose of the branch.