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.
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
Let’s look at the state of the working directory before and after
git branchbug/pr-1 bug/pr-2 * dev master $
git checkout bug/pr-1Switched 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 command such ...