In this chapter, I introduce Git's fast, lightweight, and yet very powerful branching model. I clarify the different kinds of pointers and symbolic names that come into play, show what happens when you create, modify, and change branches, and explain how Git allows users to easily work with multiple branches.
Git actually manages two categories of branches: remote branches (updated in the remote repository) and local branches (updated in the local repository). For the purposes of this chapter, I'm only talking about local branches, and I'll just use the term branch. I discuss remote branches in Chapter 12.
In a traditional source management system, there are multiple ways of describing what a branch is. From a usage standpoint, a branch is usually thought of as a line of development, meaning a set of code allocated for working on a release or update for a product. From an implementation standpoint, it is usually a collection of specific versions of a group of files that are labeled and accessed with a common identifier.
To dive into this idea a bit more, let's look at an example from the CVS world. This is only for illustration ...