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

Git Power Routines
Git Power RoutinesGit Power Routines
Git Power Routines
Nicola Paolucci
 

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 - Simplified For Testers
Git - Simplified For TestersGit - Simplified For Testers
Git - Simplified For Testers
upadhyay_25
 
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
 

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

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Recently uploaded (20)

%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 

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.