Checking Out Branches

As mentioned earlier in this chapter, your working directory can reflect only one branch at a time. To start working on a different branch, issue the git checkout command. Given a branch name, git checkout makes the branch the new, current working branch. It changes your working tree file and directory structure to match the state of the given branch. However, as you’ll see, Git builds in safeguards to keep you from losing data you haven’t yet committed.

In addition, git checkout gives you access to all states of the repository going back from the tip of the branch to the beginning of the project. This is because, as you may recall from Chapter 6, each commit captures a snapshot of the complete repository state at a given moment in time.

A Basic Example of Checking Out a Branch

Suppose you wanted to shift gears from the dev branch in the previous section’s example and instead devote your attention to fixing the problem associated with the bug/pr-1 branch. Let’s look at the state of the working directory before and after git checkout:

$ git branch
  bug/pr-1
  bug/pr-2
* dev
  master

$ git checkout bug/pr-1
Switched to branch "bug/pr-1"

$ git branch
* bug/pr-1
  bug/pr-2
  dev
  master

The files and directory structure of your working tree have been updated to reflect the state and contents of the new branch, bug/pr-1. However, in order to see the files that your working directory has changed to match the state at the tip of that branch, you must use a regular Unix ...

Get Version Control with Git now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.