There may be many different branches within a repository
at any given time, but there is at most one “active” or
“current” branch. The active branch determines what files
are checked out in the working directory. Furthermore, the current
branch is often an implicit operand in Git commands, such as the target
of the merge operation. By default,
master is the active branch, but you can make any branch the
In Chapter 6, I presented commit graph diagrams containing several branches. Keep this graph structure in mind when you manipulate branches because it helps establish the elegant and simple object model underlying Git’s branches.
A branch allows the content of the repository to diverge in many directions, one per branch. Once a repository forks at least one branch, each commit is applied to one branch or the other, whichever is active.
Each branch in a specific repository must have a unique name, and the name always refers to the most recent revision committed on that branch. The most recent commit on a branch is called the tip, or head, of the branch.
Git doesn’t keep information about where a branch originated.
Instead, the branch name moves incrementally forward as new commits are
made on the branch. Older commits must therefore be named by their hash
or via a relative name such as
dev~5. If you want to keep track of a particular commit—because it represents a stable point in the project, say, or is a version you want to test—you can explicitly assign ...