SlideShare a Scribd company logo
Git-flow
& pull requests
Bartosz Kosarzycki Apr 15, 2016
Git-flow & pull requests
AGENDA
❏ Git competition?
❏ Git workflows
❏ Gitflow workflow
❏ GF: Historical branches
❏ GF: Feature branches
❏ GF: Maintenance & Release branches
❏ Pull-requests
❏ Issues with gitflow
❏ Github-flow, git-lab flow
❏ Merge vs rebase
❏ Git stash vs temporary branches
❏ Reflog
❏ Commit granularity
❏ Comparison of git desktop clients
Git competition ? ● mercurial is almost history
● main difference was better windows
support in mercurial and discouraging
rebasing as faking history of commits
Stackoverflow: questions tagged7,103 68,906
Git competition ?
Workflows
● like SVN
● based on rebasing
one master branch
● full & light
● master, develop, feature, hotfix and
release branches
● [optional] pull-requests - recommended
● all feature development in a
dedicated branch
● master branch will never
contain broken code
● feature-branches are merged
to master branch
● [optional] pull-requests
LIGHT HEAVY
● fork
● every developer has two
repositories - private local and
server-side public
● feature-branch with pull request
as added functionality/feedback
● popular on github libraries
where we do not have write
access to repository
● [required] pull-requests
images: atlassian
Gitflow workflow
Git-flow workflow:
● has two historical branches - master & develop
● feature branches
● release & maintenance branches
● based on merging
● git plugin is available on github (link)
● is derived from the work of Vincent Driessen (blog)
Historical
branches
● two branches to record history
● usually master & develop
● master is the release-only
branch with releases marked as
tags;
contains only release-ready code
● develop is the progression
branch into which cumulative
feature-branch funtionality is
merged
● when develop reaches a stable
state it is merged into master
master
develop
Feature
branches
● each new feature in its
own branch
● only complete, working
and tested features get
merged back to develop
● develop should be stable
so that other devs can
branch off it
Feature
develop
feature/a.b.c.functionality
Feature
branches
● synch work with rebasing
● either rebase all commits
which are not pushed or
branch off and rebase
entire local branch and
later cherry-pick changes
to feature without merge
Feature
Multiple devs work
on a single feature
develop
feature/a.b.c
develop
feature/a.b.c
feature/a.b.c.local
rebasing commits approach
origin/feature/a.b.c
Feature
branches
● synch work with rebasing
● either rebase all commits
which are not pushed or
branch off and rebase
entire local branch and
later cherry-pick changes
to feature without merge
Feature
Multiple devs work
on a single feature
develop
feature/a.b.c
feature/a.b.c.local
develop
feature/a.b.c
feature/a.b.c.local
local branch approach
Maintenance
& Release
Release
Release branches
● where development branch is
constantly changing and new feature
branches are often merged
● large teams, no feature-freeze?
● minor bug fixes, prepare meta-data for
release
● branch off from develop when develop
(almost) reflects the desired state
Maintenance
& Release
Maintenance branches
Maintenance
● “hotfix” branches
● the only branches which fork directly off of
master
● should be merged into both master and
develop
● quickly fix production releases
Summary
Git-flow workflow:
Git flow [...] advocates a master branch and a
separate develop branch. [...] [ There are ] supporting
branches for features, releases and hotfixes. The
development happens on the develop branch,
moves to a release branch and is finally merged
into the master branch.
source: http://gitlab.com
Pull requests
INTERACTION WITH OTHER DEVS
COMMUNICATION SKILLS
CLEAN DEVEL BRANCH
Issues with
gitflow
● gitflow seems too complex for simple projects
● release & hotfix branches seem redundant
(introduce complexity and are an overkill for most
projects)
● git log graph is crowded with paths
● alternative github-flow (link)
● alternative gitlab-flow (link)
Github-flow
Gitlab-flow
Github-flow Gitlab-flow
- master branch as main development branch
- new functionality merged via feature branches
straight to master
- master always ready to deploy
- add stable branches
like production, pre-production, release etc.
Merge vs rebase
Rebasing
Pros Cons
● easiest way to keep feature branch
up-to-date with a develop branch
● no redundant merges
● clean, however rewritten history
● easiest and clutter-free way of
working on a single shared branch
● merging preserves context
● rebasing pushed commits breaks
history for other developers
Merge vs rebase Rebasing
Git stash vs
temporary branches Temporary
branchKeeping temporary changes on local
branches:
● enables easy checkout/rebasing/
cherry picking/resetting between
branches and commits
● is way safer
● one can have multiple, visible on a
graph, temporary changes which
branch of in a specific point in
development
REMEMBER TO PRUNE TEMPORARY
BRANCHES REGULARLY!
Reflog
● enables EMERGENCY rollback of
deleted branches
● is GARBAGE COLLECTED
automatically (~30 days)
● or manually via git-gc command
● “inception” - revision to your
revisions
$ git reflog
$ git reset --hard ece080d
● always compile!
● contain single action/ functionality/
addition/ change
● be well described
Commit
granularity
Keeping well-maintained
granularity enables:
● easy rollback when you decide to
implement the feature differently
● easy cherry-picking of specific
functionality from a feature branch
(every commit is separate!)
● describes feature branch and its
contents without looking into the
files
● makes you safer - you can always
use reflog to go back to anything
you commited
A commit should:
Git desktop
clients
OS support:
● OS X
● Windows
PROS:
● Free of charge
● Git-flow native support
● very popular
CONS:
● no advanced features
Atlassian SourceTree
Git desktop
clients
OS support:
● OS X
● Windows
PROS:
● Free of charge
● Git-flow native support
CONS:
● no advanced features
Github desktop
Git desktop
clients
OS support:
● OS X
● Linux
● Windows
PROS:
● Free of charge for non-
commercial
● Git-flow support
● Pull-request on internal
repositories
● distributed reviews
● excellent git-hub integration
CONS:
● PAID for commercial
● appearance
SmartGit
Git desktop
clients
OS support:
● OS X
PROS:
● appearance
● excellent git-hub integration
● stage separate lines
● display changes in tree-view
● Git-flow support
● excellent search
● new-branch, merge by dragging
branches
● visual conflict resolution
CONS:
● PAID
Tower 2
Resources
RESOURCES:
● https://www.google.com/trends/explore#q=mercurial,git
● https://about.gitlab.com/2014/09/29/gitlab-flow/
● http://nvie.com/posts/a-successful-git-branching-model/
● https://guides.github.com/introduction/flow/
● https://leanpub.com/git-flow/read
Thankyou!
Bartosz Kosarzycki
bartosz.kosarzycki@stxnext.pl
@bkosarzycki

More Related Content

PDF
Introduction to git flow
PDF
Git Series. Episode 3. Git Flow and Github-Flow
PPTX
Git and GitFlow branching model
PDF
Git flow
PDF
Git Branching Model
PDF
Git flow Introduction
PDF
Git Branching for Agile Teams
PDF
A Git Workflow Model or Branching Strategy
Introduction to git flow
Git Series. Episode 3. Git Flow and Github-Flow
Git and GitFlow branching model
Git flow
Git Branching Model
Git flow Introduction
Git Branching for Agile Teams
A Git Workflow Model or Branching Strategy

What's hot (20)

PPTX
Git branching strategies
PPT
Git workflows presentation
PPTX
A successful Git branching model
PDF
Git flow for daily use
PPTX
Branching and Merging Practices
PPTX
Git workflows
PDF
Github - Git Training Slides: Foundations
PPTX
Why Aren't You Using Git Flow?
PDF
Git best practices workshop
PDF
Git and git flow
PDF
Git and github 101
PDF
Git & Github for beginners
PDF
Using GitLab CI
PDF
Git real slides
PDF
Get started with gitops and flux
PDF
Git for beginners
PDF
Androidの新ビルドシステム
PPTX
K8s in 3h - Kubernetes Fundamentals Training
PDF
Git training v10
PPT
Git workflows
Git branching strategies
Git workflows presentation
A successful Git branching model
Git flow for daily use
Branching and Merging Practices
Git workflows
Github - Git Training Slides: Foundations
Why Aren't You Using Git Flow?
Git best practices workshop
Git and git flow
Git and github 101
Git & Github for beginners
Using GitLab CI
Git real slides
Get started with gitops and flux
Git for beginners
Androidの新ビルドシステム
K8s in 3h - Kubernetes Fundamentals Training
Git training v10
Git workflows
Ad

Similar to Git-flow workflow and pull-requests (20)

PDF
Git and GitHub workflows
PDF
Real World Git Workflows - EclipseCon Europe 2013
PPTX
git Technologies
PPTX
Git tips
PPTX
Gitflow - Clouddictive
PPTX
Git usage (Basics and workflow)
PDF
Introducing Git and git flow
PDF
Git workflows automat-it
PPTX
Git Workflows
PPTX
Learn Git - For Beginners and Intermediate levels
PDF
BRANCHING MODELS (workshop)
PPTX
Gitflow - Branching and Merging Flow for Git
PPTX
Gitflow - Branching and Merging Flow for Git
PDF
Managing releases effectively through git
PPTX
Gitflow
PPTX
Git development workflow
PDF
Git with the flow
PDF
Gitflow Workflow
PDF
Improving your workflow with git
PPTX
Ultimate Git Workflow - Seoul 2015
Git and GitHub workflows
Real World Git Workflows - EclipseCon Europe 2013
git Technologies
Git tips
Gitflow - Clouddictive
Git usage (Basics and workflow)
Introducing Git and git flow
Git workflows automat-it
Git Workflows
Learn Git - For Beginners and Intermediate levels
BRANCHING MODELS (workshop)
Gitflow - Branching and Merging Flow for Git
Gitflow - Branching and Merging Flow for Git
Managing releases effectively through git
Gitflow
Git development workflow
Git with the flow
Gitflow Workflow
Improving your workflow with git
Ultimate Git Workflow - Seoul 2015
Ad

More from Bartosz Kosarzycki (18)

PDF
Droidcon Summary 2021
PDF
Droidcon Online 2020 quick summary
PDF
Provider vs BLoC vs Redux
PDF
Animations in Flutter
PDF
Flutter overview - advantages & disadvantages for business
PDF
Flutter CI & Device Farms for Flutter
PDF
Drone racing - beginner's guide
PDF
Optimize apps for Chromebooks - Meet.Intive Oct, 2018
PDF
Android - Gradle build optimisation 3d83f31339d239abcc55f869e5f30348?s=47
PDF
DroidCon Berlin 2018 summary
PDF
SCALA - Functional domain
PDF
Android things introduction - Development for IoT
PDF
Daggerate your code - Write your own annotation processor
PDF
Android antipatterns
PDF
Introduction to Flutter - truly crossplatform, amazingly fast
PDF
ADG Poznań - Kotlin for Android developers
PDF
Kotlin advanced - language reference for android developers
PDF
Kotlin Developer Starter in Android projects
Droidcon Summary 2021
Droidcon Online 2020 quick summary
Provider vs BLoC vs Redux
Animations in Flutter
Flutter overview - advantages & disadvantages for business
Flutter CI & Device Farms for Flutter
Drone racing - beginner's guide
Optimize apps for Chromebooks - Meet.Intive Oct, 2018
Android - Gradle build optimisation 3d83f31339d239abcc55f869e5f30348?s=47
DroidCon Berlin 2018 summary
SCALA - Functional domain
Android things introduction - Development for IoT
Daggerate your code - Write your own annotation processor
Android antipatterns
Introduction to Flutter - truly crossplatform, amazingly fast
ADG Poznań - Kotlin for Android developers
Kotlin advanced - language reference for android developers
Kotlin Developer Starter in Android projects

Recently uploaded (20)

PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
AutoCAD Professional Crack 2025 With License Key
PPTX
Patient Appointment Booking in Odoo with online payment
PDF
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025
PDF
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Digital Systems & Binary Numbers (comprehensive )
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Odoo Companies in India – Driving Business Transformation.pdf
AutoCAD Professional Crack 2025 With License Key
Patient Appointment Booking in Odoo with online payment
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
Design an Analysis of Algorithms II-SECS-1021-03
Navsoft: AI-Powered Business Solutions & Custom Software Development
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Digital Systems & Binary Numbers (comprehensive )
Weekly report ppt - harsh dattuprasad patel.pptx
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Monitoring Stack: Grafana, Loki & Promtail
wealthsignaloriginal-com-DS-text-... (1).pdf
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Oracle Fusion HCM Cloud Demo for Beginners
17 Powerful Integrations Your Next-Gen MLM Software Needs
WiFi Honeypot Detecscfddssdffsedfseztor.pptx

Git-flow workflow and pull-requests

  • 1. Git-flow & pull requests Bartosz Kosarzycki Apr 15, 2016
  • 2. Git-flow & pull requests AGENDA ❏ Git competition? ❏ Git workflows ❏ Gitflow workflow ❏ GF: Historical branches ❏ GF: Feature branches ❏ GF: Maintenance & Release branches ❏ Pull-requests ❏ Issues with gitflow ❏ Github-flow, git-lab flow ❏ Merge vs rebase ❏ Git stash vs temporary branches ❏ Reflog ❏ Commit granularity ❏ Comparison of git desktop clients
  • 3. Git competition ? ● mercurial is almost history ● main difference was better windows support in mercurial and discouraging rebasing as faking history of commits Stackoverflow: questions tagged7,103 68,906
  • 5. Workflows ● like SVN ● based on rebasing one master branch ● full & light ● master, develop, feature, hotfix and release branches ● [optional] pull-requests - recommended ● all feature development in a dedicated branch ● master branch will never contain broken code ● feature-branches are merged to master branch ● [optional] pull-requests LIGHT HEAVY ● fork ● every developer has two repositories - private local and server-side public ● feature-branch with pull request as added functionality/feedback ● popular on github libraries where we do not have write access to repository ● [required] pull-requests images: atlassian
  • 6. Gitflow workflow Git-flow workflow: ● has two historical branches - master & develop ● feature branches ● release & maintenance branches ● based on merging ● git plugin is available on github (link) ● is derived from the work of Vincent Driessen (blog)
  • 7. Historical branches ● two branches to record history ● usually master & develop ● master is the release-only branch with releases marked as tags; contains only release-ready code ● develop is the progression branch into which cumulative feature-branch funtionality is merged ● when develop reaches a stable state it is merged into master master develop
  • 8. Feature branches ● each new feature in its own branch ● only complete, working and tested features get merged back to develop ● develop should be stable so that other devs can branch off it Feature develop feature/a.b.c.functionality
  • 9. Feature branches ● synch work with rebasing ● either rebase all commits which are not pushed or branch off and rebase entire local branch and later cherry-pick changes to feature without merge Feature Multiple devs work on a single feature develop feature/a.b.c develop feature/a.b.c feature/a.b.c.local rebasing commits approach origin/feature/a.b.c
  • 10. Feature branches ● synch work with rebasing ● either rebase all commits which are not pushed or branch off and rebase entire local branch and later cherry-pick changes to feature without merge Feature Multiple devs work on a single feature develop feature/a.b.c feature/a.b.c.local develop feature/a.b.c feature/a.b.c.local local branch approach
  • 11. Maintenance & Release Release Release branches ● where development branch is constantly changing and new feature branches are often merged ● large teams, no feature-freeze? ● minor bug fixes, prepare meta-data for release ● branch off from develop when develop (almost) reflects the desired state
  • 12. Maintenance & Release Maintenance branches Maintenance ● “hotfix” branches ● the only branches which fork directly off of master ● should be merged into both master and develop ● quickly fix production releases
  • 13. Summary Git-flow workflow: Git flow [...] advocates a master branch and a separate develop branch. [...] [ There are ] supporting branches for features, releases and hotfixes. The development happens on the develop branch, moves to a release branch and is finally merged into the master branch. source: http://gitlab.com
  • 14. Pull requests INTERACTION WITH OTHER DEVS COMMUNICATION SKILLS CLEAN DEVEL BRANCH
  • 15. Issues with gitflow ● gitflow seems too complex for simple projects ● release & hotfix branches seem redundant (introduce complexity and are an overkill for most projects) ● git log graph is crowded with paths ● alternative github-flow (link) ● alternative gitlab-flow (link)
  • 16. Github-flow Gitlab-flow Github-flow Gitlab-flow - master branch as main development branch - new functionality merged via feature branches straight to master - master always ready to deploy - add stable branches like production, pre-production, release etc.
  • 17. Merge vs rebase Rebasing Pros Cons ● easiest way to keep feature branch up-to-date with a develop branch ● no redundant merges ● clean, however rewritten history ● easiest and clutter-free way of working on a single shared branch ● merging preserves context ● rebasing pushed commits breaks history for other developers
  • 18. Merge vs rebase Rebasing
  • 19. Git stash vs temporary branches Temporary branchKeeping temporary changes on local branches: ● enables easy checkout/rebasing/ cherry picking/resetting between branches and commits ● is way safer ● one can have multiple, visible on a graph, temporary changes which branch of in a specific point in development REMEMBER TO PRUNE TEMPORARY BRANCHES REGULARLY!
  • 20. Reflog ● enables EMERGENCY rollback of deleted branches ● is GARBAGE COLLECTED automatically (~30 days) ● or manually via git-gc command ● “inception” - revision to your revisions $ git reflog $ git reset --hard ece080d
  • 21. ● always compile! ● contain single action/ functionality/ addition/ change ● be well described Commit granularity Keeping well-maintained granularity enables: ● easy rollback when you decide to implement the feature differently ● easy cherry-picking of specific functionality from a feature branch (every commit is separate!) ● describes feature branch and its contents without looking into the files ● makes you safer - you can always use reflog to go back to anything you commited A commit should:
  • 22. Git desktop clients OS support: ● OS X ● Windows PROS: ● Free of charge ● Git-flow native support ● very popular CONS: ● no advanced features Atlassian SourceTree
  • 23. Git desktop clients OS support: ● OS X ● Windows PROS: ● Free of charge ● Git-flow native support CONS: ● no advanced features Github desktop
  • 24. Git desktop clients OS support: ● OS X ● Linux ● Windows PROS: ● Free of charge for non- commercial ● Git-flow support ● Pull-request on internal repositories ● distributed reviews ● excellent git-hub integration CONS: ● PAID for commercial ● appearance SmartGit
  • 25. Git desktop clients OS support: ● OS X PROS: ● appearance ● excellent git-hub integration ● stage separate lines ● display changes in tree-view ● Git-flow support ● excellent search ● new-branch, merge by dragging branches ● visual conflict resolution CONS: ● PAID Tower 2
  • 26. Resources RESOURCES: ● https://www.google.com/trends/explore#q=mercurial,git ● https://about.gitlab.com/2014/09/29/gitlab-flow/ ● http://nvie.com/posts/a-successful-git-branching-model/ ● https://guides.github.com/introduction/flow/ ● https://leanpub.com/git-flow/read