=== Understanding Branches
Without getting into the internals of how Git works, having a basic understanding of what a branch is will help you to choose and apply the strategies outlined in this chapter.
Each Git repository contains a pool of commits. These commits are linked to one-another through their metadata--each commit contains a reference to its parent. In the case of a merge commit, there may be more than one parent commit referenced. I like to think of a branch as a string of beads, which each commit represented as a bead on the string. The analogy isn't technically correct, but it works quite well as a mental model for most purposes.
Branches in Git are actually a named pointer to a specific commit. (Give yourself a magic wand, and tap on a specific bead while saying a name. This is a branch.) When you check out a branch, you are requesting the data stored in that special commit object be copied into your working directory. Once the work has been copied into the working directory, you can make a