git-checkout(1)
===============

NAME
----
git-checkout - Checkout and switch to a branch.

SYNOPSIS
--------
'git-checkout' [-f] [-b <new_branch>] [<branch>] [<paths>...]

DESCRIPTION
-----------

When <paths> are not given, this command switches branches, by
updating the index and working tree to reflect the specified
branch, <branch>, and updating HEAD to be <branch> or, if
specified, <new_branch>.

When <paths> are given, this command does *not* switch
branches.  It updates the named paths in the working tree from
the index file (i.e. it runs `git-checkout-index -f -u`).  In
this case, `-f` and `-b` options are meaningless and giving
either of them results in an error.  <branch> argument can be
used to specify a specific tree-ish to update the index for the
given paths before updating the working tree.


OPTIONS
-------
-f::
	Force an re-read of everything.

-b::
	Create a new branch and start it at <branch>.

<new_branch>::
	Name for the new branch.

<branch>::
	Branch to checkout; may be any object ID that resolves to a
	commit. Defaults to HEAD.


EXAMPLE
-------

The following sequence checks out the `master` branch, reverts
the `Makefile` to two revisions back, deletes hello.c by
mistake, and gets it back from the index.

------------
$ git checkout master
$ git checkout master~2 Makefile
$ rm -f hello.c
$ git checkout hello.c
------------

If you have an unfortunate branch that is named `hello.c`, the
last step above would be confused as an instruction to switch to
that branch.  You should instead write:

------------
$ git checkout -- hello.c
------------


Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

