2. Objectives
• To get an overview of version control systems in
general
• To learn how to use Git in a production
environment
• To understand advanced concepts of branching and
merging
2 / 58
31. GitFlow
• Originally developed by Vincent Driessen
• Assigns very specific roles to different branches,
and defines how and when they should interact
• Allows merging and branching to be part of your
daily workflow
31 / 58
32. Main Branches
• master
• origin/master HEAD is always ready for production
• develop
• origin/develop HEAD always contains the latest
delivered development changes
• Nightly builds are created from this branch
• Whenever considered stable, merged back into master
and tagged
32 / 58
34. Supporting branches
• Feature branches
• Allow parallel development
• Make tracking features easier
• Release branches
• Help preparing for releases
• Hotfix branches
• Enable you to quickly fix live problems
34 / 58
35. Feature Branches
• Branch from and merge back into develop
• Used for developing new features
• Exists while the feature is in development
• Will eventually be
• Merged back, to include the new feature in the next
release, or
• Discarded, if the feature should not be included
• Never directly interact with the master branch
35 / 58
37. Hint
Merging with the “no fast-forward”
option causes the merge to always
create a new commit. This makes
tracking of your branches a lot
easier!
37 / 78
38. Release Branches
• Branch from develop, and merge back into develop
and master
• Created when all desired features for the next
release have been merged back into develop
• Supports preparation of a new production release
• Setting up meta-data such as version numbers or
database connections
• Generating API documentation
• Features for the next release can already merge
back into develop
38 / 58
40. Hint
Whenever changes are merged
back into master, this is a new
production release by definition!
40 / 78
41. Hotfix Branches
• Branch from master, and merge back into develop
and master
• Created when a critical bug in a production release
has to be resolved immediately
• Other team members can continue working on new
features or the next release
41 / 58