5eaf9a8f21fad5b73b3a4fa63a929fce272deacf
[git.git] / man1 / git-commit.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-COMMIT" 1 "" "" ""
21 .SH NAME
22 git-commit \- Record your changes
23 .SH "SYNOPSIS"
24
25 .nf
26 \fIgit\-commit\fR [\-a] [\-s] [\-v] [(\-c | \-C) <commit> | \-F <file> | \-m <msg>]
27            [\-\-no\-verify] [\-\-amend] [\-e] [\-\-author <author>]
28            [\-\-] [[\-i | \-o ]<file>...]
29 .fi
30
31 .SH "DESCRIPTION"
32
33
34 Updates the index file for given paths, or all modified files if \fI\-a\fR is specified, and makes a commit object\&. The command VISUAL and EDITOR environment variables to edit the commit log message\&.
35
36
37 Several environment variable are used during commits\&. They are documented in \fBgit\-commit\-tree\fR(1)\&.
38
39
40 This command can run commit\-msg, pre\-commit, and post\-commit hooks\&. See hooks: \fIhooks.html\fR for more information\&.
41
42 .SH "OPTIONS"
43
44 .TP
45 \-a|\-\-all
46 Update all paths in the index file\&. This flag notices files that have been modified and deleted, but new files you have not told git about are not affected\&.
47
48 .TP
49 \-c or \-C <commit>
50 Take existing commit object, and reuse the log message and the authorship information (including the timestamp) when creating the commit\&. With \fI\-C\fR, the editor is not invoked; with \fI\-c\fR the user can further edit the commit message\&.
51
52 .TP
53 \-F <file>
54 Take the commit message from the given file\&. Use \fI\-\fR to read the message from the standard input\&.
55
56 .TP
57 \-\-author <author>
58 Override the author name used in the commit\&. Use A U Thor <author@example\&.com> format\&.
59
60 .TP
61 \-m <msg>
62 Use the given <msg> as the commit message\&.
63
64 .TP
65 \-s|\-\-signoff
66 Add Signed\-off\-by line at the end of the commit message\&.
67
68 .TP
69 \-v|\-\-verify
70 Look for suspicious lines the commit introduces, and abort committing if there is one\&. The definition of \fIsuspicious lines\fR is currently the lines that has trailing whitespaces, and the lines whose indentation has a SP character immediately followed by a TAB character\&. This is the default\&.
71
72 .TP
73 \-n|\-\-no\-verify
74 The opposite of \-\-verify\&.
75
76 .TP
77 \-e|\-\-edit
78 The message taken from file with \-F, command line with \-m, and from file with \-C are usually used as the commit log message unmodified\&. This option lets you further edit the message taken from these sources\&.
79
80 .TP
81 \-\-amend
82 Used to amend the tip of the current branch\&. Prepare the tree object you would want to replace the latest commit as usual (this includes the usual \-i/\-o and explicit paths), and the commit log editor is seeded with the commit message from the tip of the current branch\&. The commit you create replaces the current tip -- if it was a merge, it will have the parents of the current tip as parents -- so the current top commit is discarded\&.
83
84 It is a rough equivalent for:
85
86
87 .nf
88         $ git reset \-\-soft HEAD^
89         $ \&.\&.\&. do something else to come up with the right tree \&.\&.\&.
90         $ git commit \-c ORIG_HEAD
91
92 .fi
93 but can be used to amend a merge commit\&.
94
95 .TP
96 \-i|\-\-include
97 Instead of committing only the files specified on the command line, update them in the index file and then commit the whole index\&. This is the traditional behavior\&.
98
99 .TP
100 \-o|\-\-only
101 Commit only the files specified on the command line\&. This format cannot be used during a merge, nor when the index and the latest commit does not match on the specified paths to avoid confusion\&.
102
103 .TP
104 \-\-
105 Do not interpret any more arguments as options\&.
106
107 .TP
108 <file>...
109 Files to be committed\&. The meaning of these is different between \-\-include and \-\-only\&. Without either, it defaults \-\-only semantics\&.
110
111
112 If you make a commit and then found a mistake immediately after that, you can recover from it with \fBgit\-reset\fR(1)\&.
113
114 .SH "DISCUSSION"
115
116
117 git commit without _any_ parameter commits the tree structure recorded by the current index file\&. This is a whole\-tree commit even the command is invoked from a subdirectory\&.
118
119
120 git commit \-\-include paths... is equivalent to
121
122 .nf
123 git update\-index \-\-remove paths\&.\&.\&.
124 git commit
125 .fi
126
127
128 That is, update the specified paths to the index and then commit the whole tree\&.
129
130
131 git commit paths... largely bypasses the index file and commits only the changes made to the specified paths\&. It has however several safety valves to prevent confusion\&.
132
133 .TP 3
134 1.
135 It refuses to run during a merge (i\&.e\&. when $GIT_DIR/MERGE_HEAD exists), and reminds trained git users that the traditional semantics now needs \-i flag\&.
136 .TP
137 2.
138 It refuses to run if named paths... are different in HEAD and the index (ditto about reminding)\&. Added paths are OK\&. This is because an earlier git diff (not git diff HEAD) would have shown the differences since the last git update\-index paths... to the user, and an inexperienced user may mistakenly think that the changes between the index and the HEAD (i\&.e\&. earlier changes made before the last git update\-index paths... was done) are not being committed\&.
139 .TP
140 3.
141 It reads HEAD commit into a temporary index file, updates the specified paths... and makes a commit\&. At the same time, the real index file is also updated with the same paths...\&.
142 .LP
143
144
145 git commit \-\-all updates the index file with _all_ changes to the working tree, and makes a whole\-tree commit, regardless of which subdirectory the command is invoked in\&.
146
147 .SH "AUTHOR"
148
149
150 Written by Linus Torvalds <torvalds@osdl\&.org> and Junio C Hamano <junkio@cox\&.net>
151
152 .SH "GIT"
153
154
155 Part of the \fBgit\fR(7) suite
156