0 Introduction
Version control plays a key role in software development, and it is especially relevant for agile teams.
It is the cornerstone for best practices such us continuous integration, continuous delivery and devops.
Only when using version control can teams implement the "collective code ownership" and enforce the concept of being "always ready to ship".
There is one feature that makes all modern version control systems (Git, Mercurial and Plastic SCM) stand out from the previous generations - they excel in branching and merging.
The goal of this guide is to be a powerful tool for the expert developer by explaining the key concepts to master the most relevant merge techniques. Mastering branching and merging is the way to master version control.