Autogenerated man pages for v1.1.2-g9e9b
[git.git] / man1 / git-checkout.1
1 .\"Generated by db2man.xsl. Don't modify this, modify the source.
2 .de Sh \" Subsection
3 .br
4 .if t .Sp
5 .ne 5
6 .PP
7 \fB\\$1\fR
8 .PP
9 ..
10 .de Sp \" Vertical space (when we can't use .PP)
11 .if t .sp .5v
12 .if n .sp
13 ..
14 .de Ip \" List item
15 .br
16 .ie \\n(.$>=3 .ne \\$3
17 .el .ne 3
18 .IP "\\$1" \\$2
19 ..
20 .TH "GIT-CHECKOUT" 1 "" "" ""
21 .SH NAME
22 git-checkout \- Checkout and switch to a branch.
23 .SH "SYNOPSIS"
24
25
26 git\-checkout [\-f] [\-b <new_branch>] [\-m] [<branch>] [<paths>...]
27
28 .SH "DESCRIPTION"
29
30
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>\&.
32
33
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\&.
35
36 .SH "OPTIONS"
37
38 .TP
39 \-f
40 Force an re\-read of everything\&.
41
42 .TP
43 \-b
44 Create a new branch and start it at <branch>\&.
45
46 .TP
47 \-m
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\&.
49
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\&.
51
52 .TP
53 <new_branch>
54 Name for the new branch\&.
55
56 .TP
57 <branch>
58 Branch to checkout; may be any object ID that resolves to a commit\&. Defaults to HEAD\&.
59
60 .SH "EXAMPLES"
61
62 .TP 3
63 1.
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\&.
65
66
67 .IP
68 $ git checkout master 
69 $ git checkout master~2 Makefile 
70 $ rm \-f hello\&.c
71 $ git checkout hello\&.c 
72
73  switch branch
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:
76
77 .IP
78 $ git checkout \-\- hello\&.c.TP
79 2.
80 After working in a wrong branch, switching to the correct branch you would want to is done with:
81
82
83 .IP
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:
85
86
87 .IP
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:
90
91
92 .IP
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\&.
95 .TP
96 3.
97 When a merge conflict happens during switching branches with the \-m option, you would see something like this:
98
99
100 .IP
101 $ git checkout \-m mytopic
102 Auto\-merging frotz
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:
106
107 .IP
108 $ edit frotz
109 $ git update\-index frotz.LP
110
111 .SH "AUTHOR"
112
113
114 Written by Linus Torvalds <torvalds@osdl\&.org>
115
116 .SH "DOCUMENTATION"
117
118
119 Documentation by Junio C Hamano and the git\-list <git@vger\&.kernel\&.org>\&.
120
121 .SH "GIT"
122
123
124 Part of the \fBgit\fR(7) suite
125