1 .\"Generated by db2man.xsl. Don't modify this, modify the source.
10 .de Sp \" Vertical space (when we can't use .PP)
16 .ie \\n(.$>=3 .ne \\$3
20 .TH "GIT-CHECKOUT" 1 "" "" ""
22 git-checkout \- Checkout and switch to a branch.
26 git\-checkout [\-f] [\-b <new_branch>] [\-m] [<branch>] [<paths>...]
31 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>\&.
34 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\&.
40 Force an re\-read of everything\&.
44 Create a new branch and start it at <branch>\&.
48 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\&.
50 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\&.
54 Name for the new branch\&.
58 Branch to checkout; may be any object ID that resolves to a commit\&. Defaults to HEAD\&.
64 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\&.
69 $ git checkout master~2 Makefile
71 $ git checkout hello\&.c
74 take out a file out of other commit
75 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:
78 $ git checkout \-\- hello\&.c.TP
80 After working in a wrong branch, switching to the correct branch you would want to is done with:
84 $ git checkout mytopicHowever, 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:
88 $ git checkout mytopic
89 fatal: Entry 'frotz' not uptodate\&. Cannot merge\&.You can give the \-m flag to the command, which would try a three\-way merge:
93 $ git checkout \-m mytopic
94 Auto\-merging frotzAfter 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\&.
97 When a merge conflict happens during switching branches with the \-m option, you would see something like this:
101 $ git checkout \-m mytopic
103 merge: warning: conflicts during merge
104 ERROR: Merge conflict in frotz
105 fatal: merge program failedAt 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:
109 $ git update\-index frotz.LP
114 Written by Linus Torvalds <torvalds@osdl\&.org>
119 Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
124 Part of the \fBgit\fR(7) suite