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

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

SYNOPSIS
--------
'git-checkout' [-f] [-b <new_branch>] [-m] [<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>.

-m::
	If you have local modifications to a file that is
	different between the current branch and the branch you
	are switching to, the command refuses to switch
	branches, to preserve your modifications in context.
	With this option, a three-way merge between the current
	branch, your working tree contents, and the new branch
	is done, and you will be on the new branch.
+
When a merge conflict happens, the index entries for conflicting
paths are left unmerged, and you need to resolve the conflicts
and mark the resolved paths with `git update-index`.

<new_branch>::
	Name for the new branch.

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


EXAMPLES
--------

. 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 <1>
$ git checkout master~2 Makefile <2>
$ rm -f hello.c
$ git checkout hello.c <3>

<1> switch branch
<2> take out a file out of other commit
<3> or "git checkout -- hello.c", as in the next example.
------------
+
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
------------

. After working in a wrong branch, switching to the correct
branch you would want to is done with:
+
------------
$ git checkout mytopic
------------
+
However, your "wrong" branch and correct "mytopic" branch may
differ in files that you have locally modified, in which case,
the above checkout would fail like this:
+
------------
$ git checkout mytopic
fatal: Entry 'frotz' not uptodate. Cannot merge.
------------
+
You can give the `-m` flag to the command, which would try a
three-way merge:
+
------------
$ git checkout -m mytopic
Auto-merging frotz
------------
+
After this three-way merge, the local modifications are _not_
registered in your index file, so `git diff` would show you what
changes you made since the tip of the new branch.

. When a merge conflict happens during switching branches with
the `-m` option, you would see something like this:
+
------------
$ git checkout -m mytopic
Auto-merging frotz
merge: warning: conflicts during merge
ERROR: Merge conflict in frotz
fatal: merge program failed
------------
+
At this point, `git diff` shows the changes cleanly merged as in
the previous example, as well as the changes in the conflicted
files.  Edit and resolve the conflict and mark it resolved with
`git update-index` as usual:
+
------------
$ edit frotz
$ git update-index frotz
------------


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

