]>
Commit | Line | Data |
---|---|---|
215a7ad1 JH |
1 | git-commit(1) |
2 | ============= | |
62033318 JH |
3 | |
4 | NAME | |
5 | ---- | |
c3f0baac | 6 | git-commit - Record changes to the repository |
62033318 JH |
7 | |
8 | SYNOPSIS | |
9 | -------- | |
353ce815 | 10 | [verse] |
b4bd4668 | 11 | 'git commit' [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend] |
00ea64ed | 12 | [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|reword):]<commit>)] |
b4bd4668 CI |
13 | [-F <file> | -m <msg>] [--reset-author] [--allow-empty] |
14 | [--allow-empty-message] [--no-verify] [-e] [--author=<author>] | |
0460ed2c | 15 | [--date=<date>] [--cleanup=<mode>] [--[no-]status] |
e440fc58 | 16 | [-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]] |
2daae3d1 ZH |
17 | [(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]] |
18 | [--] [<pathspec>...] | |
62033318 JH |
19 | |
20 | DESCRIPTION | |
21 | ----------- | |
5cfd4a9d NTND |
22 | Create a new commit containing the current contents of the index and |
23 | the given log message describing the changes. The new commit is a | |
24 | direct child of HEAD, usually the tip of the current branch, and the | |
25 | branch is updated to point to it (unless no branch is associated with | |
26 | the working tree, in which case HEAD is "detached" as described in | |
27 | linkgit:git-checkout[1]). | |
62033318 | 28 | |
5cfd4a9d | 29 | The content to be committed can be specified in several ways: |
f9935bf9 | 30 | |
5cfd4a9d NTND |
31 | 1. by using linkgit:git-add[1] to incrementally "add" changes to the |
32 | index before using the 'commit' command (Note: even modified files | |
33 | must be "added"); | |
5bfc4f23 | 34 | |
5cfd4a9d | 35 | 2. by using linkgit:git-rm[1] to remove files from the working tree |
a76c2acb | 36 | and the index, again before using the 'commit' command; |
6c96753d | 37 | |
7431596a NTND |
38 | 3. by listing files as arguments to the 'commit' command |
39 | (without --interactive or --patch switch), in which | |
a76c2acb | 40 | case the commit will ignore changes staged in the index, and instead |
6fc4a7e5 | 41 | record the current content of the listed files (which must already |
2de9b711 | 42 | be known to Git); |
6c96753d | 43 | |
a76c2acb BF |
44 | 4. by using the -a switch with the 'commit' command to automatically |
45 | "add" changes from all known files (i.e. all files that are already | |
46 | listed in the index) and to automatically "rm" files in the index | |
47 | that have been removed from the working tree, and then perform the | |
48 | actual commit; | |
6c96753d | 49 | |
b4bd4668 | 50 | 5. by using the --interactive or --patch switches with the 'commit' command |
7431596a NTND |
51 | to decide one by one which files or hunks should be part of the commit |
52 | in addition to contents in the index, | |
6cf378f0 | 53 | before finalizing the operation. See the ``Interactive Mode'' section of |
b4bd4668 | 54 | linkgit:git-add[1] to learn how to operate these modes. |
6cbf07ef | 55 | |
60c2993c | 56 | The `--dry-run` option can be used to obtain a |
6c96753d | 57 | summary of what is included by any of the above for the next |
60c2993c | 58 | commit by giving the same set of parameters (options and paths). |
6c96753d | 59 | |
483bc4f0 | 60 | If you make a commit and then find a mistake immediately after |
0b444cdb | 61 | that, you can recover from it with 'git reset'. |
5bfc4f23 | 62 | |
ae2e0ab6 | 63 | :git-commit: 1 |
6d35cc76 | 64 | |
62033318 JH |
65 | OPTIONS |
66 | ------- | |
3240240f SB |
67 | -a:: |
68 | --all:: | |
6c96753d JH |
69 | Tell the command to automatically stage files that have |
70 | been modified and deleted, but new files you have not | |
2de9b711 | 71 | told Git about are not affected. |
62033318 | 72 | |
b4bd4668 CI |
73 | -p:: |
74 | --patch:: | |
75 | Use the interactive patch selection interface to chose | |
76 | which changes to commit. See linkgit:git-add[1] for | |
77 | details. | |
78 | ||
3240240f SB |
79 | -C <commit>:: |
80 | --reuse-message=<commit>:: | |
bc47c29e | 81 | Take an existing commit object, and reuse the log message |
62033318 | 82 | and the authorship information (including the timestamp) |
bc47c29e | 83 | when creating the commit. |
62033318 | 84 | |
3240240f SB |
85 | -c <commit>:: |
86 | --reedit-message=<commit>:: | |
23f8239b | 87 | Like '-C', but with `-c` the editor is invoked, so that |
bc47c29e SB |
88 | the user can further edit the commit message. |
89 | ||
00ea64ed CM |
90 | --fixup=[(amend|reword):]<commit>:: |
91 | Create a new commit which "fixes up" `<commit>` when applied with | |
92 | `git rebase --autosquash`. Plain `--fixup=<commit>` creates a | |
93 | "fixup!" commit which changes the content of `<commit>` but leaves | |
94 | its log message untouched. `--fixup=amend:<commit>` is similar but | |
95 | creates an "amend!" commit which also replaces the log message of | |
96 | `<commit>` with the log message of the "amend!" commit. | |
97 | `--fixup=reword:<commit>` creates an "amend!" commit which | |
98 | replaces the log message of `<commit>` with its own log message | |
99 | but makes no changes to the content of `<commit>`. | |
100 | + | |
101 | The commit created by plain `--fixup=<commit>` has a subject | |
102 | composed of "fixup!" followed by the subject line from <commit>, | |
103 | and is recognized specially by `git rebase --autosquash`. The `-m` | |
104 | option may be used to supplement the log message of the created | |
105 | commit, but the additional commentary will be thrown away once the | |
106 | "fixup!" commit is squashed into `<commit>` by | |
107 | `git rebase --autosquash`. | |
108 | + | |
109 | The commit created by `--fixup=amend:<commit>` is similar but its | |
110 | subject is instead prefixed with "amend!". The log message of | |
111 | <commit> is copied into the log message of the "amend!" commit and | |
112 | opened in an editor so it can be refined. When `git rebase | |
113 | --autosquash` squashes the "amend!" commit into `<commit>`, the | |
114 | log message of `<commit>` is replaced by the refined log message | |
115 | from the "amend!" commit. It is an error for the "amend!" commit's | |
116 | log message to be empty unless `--allow-empty-message` is | |
117 | specified. | |
118 | + | |
119 | `--fixup=reword:<commit>` is shorthand for `--fixup=amend:<commit> | |
120 | --only`. It creates an "amend!" commit with only a log message | |
121 | (ignoring any changes staged in the index). When squashed by `git | |
122 | rebase --autosquash`, it replaces the log message of `<commit>` | |
123 | without making any other changes. | |
124 | + | |
125 | Neither "fixup!" nor "amend!" commits change authorship of | |
126 | `<commit>` when applied by `git rebase --autosquash`. | |
127 | See linkgit:git-rebase[1] for details. | |
d71b8ba7 | 128 | |
89ac1223 PN |
129 | --squash=<commit>:: |
130 | Construct a commit message for use with `rebase --autosquash`. | |
131 | The commit message subject line is taken from the specified | |
132 | commit with a prefix of "squash! ". Can be used with additional | |
133 | commit message options (`-m`/`-c`/`-C`/`-F`). See | |
134 | linkgit:git-rebase[1] for details. | |
135 | ||
c51f6cee | 136 | --reset-author:: |
37f7a857 | 137 | When used with -C/-c/--amend options, or when committing after a |
5621760f | 138 | conflicting cherry-pick, declare that the authorship of the |
1fd63cac | 139 | resulting commit now belongs to the committer. This also renews |
37f7a857 | 140 | the author timestamp. |
c51f6cee | 141 | |
7c9f7038 JK |
142 | --short:: |
143 | When doing a dry-run, give the output in the short-format. See | |
144 | linkgit:git-status[1] for details. Implies `--dry-run`. | |
145 | ||
e858af6d RR |
146 | --branch:: |
147 | Show the branch and tracking info even in short-format. | |
148 | ||
7c9f7038 JK |
149 | --porcelain:: |
150 | When doing a dry-run, give the output in a porcelain-ready | |
151 | format. See linkgit:git-status[1] for details. Implies | |
152 | `--dry-run`. | |
153 | ||
f3f47a1e | 154 | --long:: |
5621760f | 155 | When doing a dry-run, give the output in the long-format. |
f3f47a1e JK |
156 | Implies `--dry-run`. |
157 | ||
7c9f7038 | 158 | -z:: |
e858af6d | 159 | --null:: |
860cd699 AH |
160 | When showing `short` or `porcelain` status output, print the |
161 | filename verbatim and terminate the entries with NUL, instead of LF. | |
162 | If no format is given, implies the `--porcelain` output format. | |
163 | Without the `-z` option, filenames with "unusual" characters are | |
164 | quoted as explained for the configuration variable `core.quotePath` | |
165 | (see linkgit:git-config[1]). | |
7c9f7038 | 166 | |
3240240f SB |
167 | -F <file>:: |
168 | --file=<file>:: | |
62033318 JH |
169 | Take the commit message from the given file. Use '-' to |
170 | read the message from the standard input. | |
171 | ||
c4a7ff52 | 172 | --author=<author>:: |
3334729c JS |
173 | Override the commit author. Specify an explicit author using the |
174 | standard `A U Thor <author@example.com>` format. Otherwise <author> | |
175 | is assumed to be a pattern and is used to search for an existing | |
176 | commit by that author (i.e. rev-list --all -i --author=<author>); | |
177 | the commit author is then copied from the first such commit found. | |
130fcca6 | 178 | |
02b47cd7 MV |
179 | --date=<date>:: |
180 | Override the author date used in the commit. | |
181 | ||
3240240f SB |
182 | -m <msg>:: |
183 | --message=<msg>:: | |
62033318 | 184 | Use the given <msg> as the commit message. |
6bf6366c CH |
185 | If multiple `-m` options are given, their values are |
186 | concatenated as separate paragraphs. | |
f55e84ff | 187 | + |
30884c9a | 188 | The `-m` option is mutually exclusive with `-c`, `-C`, and `-F`. |
62033318 | 189 | |
3240240f SB |
190 | -t <file>:: |
191 | --template=<file>:: | |
1f08c2c8 JH |
192 | When editing the commit message, start the editor with the |
193 | contents in the given file. The `commit.template` configuration | |
194 | variable is often used to give this option implicitly to the | |
195 | command. This mechanism can be used by projects that want to | |
196 | guide participants with some hints on what to write in the message | |
197 | in what order. If the user exits the editor without editing the | |
198 | message, the commit is aborted. This has no effect when a message | |
199 | is given by other means, e.g. with the `-m` or `-F` options. | |
d1cc130a | 200 | |
ae2e0ab6 | 201 | include::signoff-option.txt[] |
3f971fc4 | 202 | |
2daae3d1 ZH |
203 | --trailer <token>[(=|:)<value>]:: |
204 | Specify a (<token>, <value>) pair that should be applied as a | |
205 | trailer. (e.g. `git commit --trailer "Signed-off-by:C O Mitter \ | |
206 | <committer@example.com>" --trailer "Helped-by:C O Mitter \ | |
207 | <committer@example.com>"` will add the "Signed-off-by" trailer | |
208 | and the "Helped-by" trailer to the commit message.) | |
209 | The `trailer.*` configuration variables | |
210 | (linkgit:git-interpret-trailers[1]) can be used to define if | |
211 | a duplicated trailer is omitted, where in the run of trailers | |
212 | each trailer would appear, and other details. | |
213 | ||
3240240f SB |
214 | -n:: |
215 | --no-verify:: | |
aa6da6cd | 216 | This option bypasses the pre-commit and commit-msg hooks. |
6998e4db | 217 | See also linkgit:githooks[5]. |
eaa54efc | 218 | |
36863af1 JH |
219 | --allow-empty:: |
220 | Usually recording a commit that has the exact same tree as its | |
17ef10d0 JH |
221 | sole parent commit is a mistake, and the command prevents you |
222 | from making such a commit. This option bypasses the safety, and | |
6b677a28 | 223 | is primarily for use by foreign SCM interface scripts. |
36863af1 | 224 | |
c9b5fde7 ÆAB |
225 | --allow-empty-message:: |
226 | Like --allow-empty this command is primarily for use by foreign | |
6b677a28 | 227 | SCM interface scripts. It allows you to create a commit with an |
c9b5fde7 ÆAB |
228 | empty commit message without using plumbing commands like |
229 | linkgit:git-commit-tree[1]. | |
230 | ||
5f065737 | 231 | --cleanup=<mode>:: |
46fbf753 BC |
232 | This option determines how the supplied commit message should be |
233 | cleaned up before committing. The '<mode>' can be `strip`, | |
75df1f43 | 234 | `whitespace`, `verbatim`, `scissors` or `default`. |
46fbf753 BC |
235 | + |
236 | -- | |
237 | strip:: | |
9a35c14d FG |
238 | Strip leading and trailing empty lines, trailing whitespace, |
239 | commentary and collapse consecutive empty lines. | |
46fbf753 BC |
240 | whitespace:: |
241 | Same as `strip` except #commentary is not removed. | |
242 | verbatim:: | |
243 | Do not change the message at all. | |
75df1f43 | 244 | scissors:: |
3a33fe5c KS |
245 | Same as `whitespace` except that everything from (and including) |
246 | the line found below is truncated, if the message is to be edited. | |
247 | "`#`" can be customized with core.commentChar. | |
248 | ||
249 | # ------------------------ >8 ------------------------ | |
250 | ||
46fbf753 BC |
251 | default:: |
252 | Same as `strip` if the message is to be edited. | |
253 | Otherwise `whitespace`. | |
254 | -- | |
255 | + | |
ae9f6311 | 256 | The default can be changed by the `commit.cleanup` configuration |
46fbf753 | 257 | variable (see linkgit:git-config[1]). |
5f065737 | 258 | |
3240240f SB |
259 | -e:: |
260 | --edit:: | |
6d35cc76 | 261 | The message taken from file with `-F`, command line with |
9a3e36cd AGB |
262 | `-m`, and from commit object with `-C` are usually used as |
263 | the commit log message unmodified. This option lets you | |
6d35cc76 JH |
264 | further edit the message taken from these sources. |
265 | ||
ae45320c MM |
266 | --no-edit:: |
267 | Use the selected commit message without launching an editor. | |
268 | For example, `git commit --amend --no-edit` amends a commit | |
269 | without changing its commit message. | |
270 | ||
ae5d8470 | 271 | --amend:: |
aa7b8c65 CMN |
272 | Replace the tip of the current branch by creating a new |
273 | commit. The recorded tree is prepared as usual (including | |
274 | the effect of the `-i` and `-o` options and explicit | |
275 | pathspec), and the message from the original commit is used | |
276 | as the starting point, instead of an empty message, when no | |
277 | other message is specified from the command line via options | |
278 | such as `-m`, `-F`, `-c`, etc. The new commit has the same | |
279 | parents and author as the current one (the `--reset-author` | |
280 | option can countermand this). | |
ae5d8470 | 281 | + |
6cbd5d7d | 282 | -- |
ae5d8470 | 283 | It is a rough equivalent for: |
6cbd5d7d | 284 | ------ |
ae5d8470 MR |
285 | $ git reset --soft HEAD^ |
286 | $ ... do something else to come up with the right tree ... | |
287 | $ git commit -c ORIG_HEAD | |
6cbd5d7d FD |
288 | |
289 | ------ | |
ae5d8470 | 290 | but can be used to amend a merge commit. |
6cbd5d7d | 291 | -- |
97c33c65 TR |
292 | + |
293 | You should understand the implications of rewriting history if you | |
294 | amend a commit that has already been published. (See the "RECOVERING | |
295 | FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].) | |
ae5d8470 | 296 | |
77effefe AS |
297 | --no-post-rewrite:: |
298 | Bypass the post-rewrite hook. | |
299 | ||
3240240f SB |
300 | -i:: |
301 | --include:: | |
6c96753d JH |
302 | Before making a commit out of staged contents so far, |
303 | stage the contents of paths given on the command line | |
304 | as well. This is usually not what you want unless you | |
305 | are concluding a conflicted merge. | |
62033318 | 306 | |
3240240f SB |
307 | -o:: |
308 | --only:: | |
d956a20a JH |
309 | Make a commit by taking the updated working tree contents |
310 | of the paths specified on the | |
d4ba07ca | 311 | command line, disregarding any contents that have been |
d956a20a | 312 | staged for other paths. This is the default mode of operation of |
0b444cdb | 313 | 'git commit' if any paths are given on the command line, |
d4ba07ca | 314 | in which case this option can be omitted. |
bcf9626a | 315 | If this option is specified together with `--amend`, then |
04c8ce9c | 316 | no paths need to be specified, which can be used to amend |
d4ba07ca | 317 | the last commit without committing changes that have |
319d8352 AK |
318 | already been staged. If used together with `--allow-empty` |
319 | paths are also not required, and an empty commit will be created. | |
d4ba07ca | 320 | |
e440fc58 AM |
321 | --pathspec-from-file=<file>:: |
322 | Pathspec is passed in `<file>` instead of commandline args. If | |
323 | `<file>` is exactly `-` then standard input is used. Pathspec | |
324 | elements are separated by LF or CR/LF. Pathspec elements can be | |
325 | quoted as explained for the configuration variable `core.quotePath` | |
326 | (see linkgit:git-config[1]). See also `--pathspec-file-nul` and | |
327 | global `--literal-pathspecs`. | |
328 | ||
329 | --pathspec-file-nul:: | |
330 | Only meaningful with `--pathspec-from-file`. Pathspec elements are | |
331 | separated with NUL character and all other characters are taken | |
332 | literally (including newlines and quotes). | |
333 | ||
1947bdbc JH |
334 | -u[<mode>]:: |
335 | --untracked-files[=<mode>]:: | |
4cc62606 | 336 | Show untracked files. |
4bfee30a | 337 | + |
2017956a | 338 | -- |
4cc62606 CB |
339 | The mode parameter is optional (defaults to 'all'), and is used to |
340 | specify the handling of untracked files; when -u is not used, the | |
341 | default is 'normal', i.e. show untracked files and directories. | |
2017956a | 342 | |
e9e92198 | 343 | The possible options are: |
2017956a | 344 | |
6c2ce048 | 345 | - 'no' - Show no untracked files |
4bfee30a MSO |
346 | - 'normal' - Shows untracked files and directories |
347 | - 'all' - Also shows individual files in untracked directories. | |
2017956a | 348 | |
4cc62606 CB |
349 | The default can be changed using the status.showUntrackedFiles |
350 | configuration variable documented in linkgit:git-config[1]. | |
2017956a | 351 | -- |
af83bed6 | 352 | |
3240240f SB |
353 | -v:: |
354 | --verbose:: | |
af83bed6 JN |
355 | Show unified diff between the HEAD commit and what |
356 | would be committed at the bottom of the commit message | |
9a35c14d FG |
357 | template to help the user describe the commit by reminding |
358 | what changes the commit has. | |
359 | Note that this diff output doesn't have its | |
360 | lines prefixed with '#'. This diff will not be a part | |
aaab8420 PB |
361 | of the commit message. See the `commit.verbose` configuration |
362 | variable in linkgit:git-config[1]. | |
40555000 MG |
363 | + |
364 | If specified twice, show in addition the unified diff between | |
365 | what would be committed and the worktree files, i.e. the unstaged | |
366 | changes to tracked files. | |
af83bed6 | 367 | |
3240240f SB |
368 | -q:: |
369 | --quiet:: | |
23bfbb81 | 370 | Suppress commit summary message. |
ebd124c6 | 371 | |
3a5d13a3 JH |
372 | --dry-run:: |
373 | Do not create a commit, but show a list of paths that are | |
374 | to be committed, paths with local changes that will be left | |
375 | uncommitted and paths that are untracked. | |
376 | ||
bed575e4 JHI |
377 | --status:: |
378 | Include the output of linkgit:git-status[1] in the commit | |
379 | message template when using an editor to prepare the commit | |
380 | message. Defaults to on, but can be used to override | |
381 | configuration variable commit.status. | |
382 | ||
383 | --no-status:: | |
384 | Do not include the output of linkgit:git-status[1] in the | |
385 | commit message template when using an editor to prepare the | |
386 | default commit message. | |
387 | ||
098bbdc3 TJ |
388 | -S[<keyid>]:: |
389 | --gpg-sign[=<keyid>]:: | |
9da37fe1 | 390 | --no-gpg-sign:: |
2b594bf9 MM |
391 | GPG-sign commits. The `keyid` argument is optional and |
392 | defaults to the committer identity; if specified, it must be | |
9da37fe1 ĐTCD |
393 | stuck to the option without a space. `--no-gpg-sign` is useful to |
394 | countermand both `commit.gpgSign` configuration variable, and | |
395 | earlier `--gpg-sign`. | |
55ca3f99 | 396 | |
e994004f | 397 | \--:: |
4170a195 JH |
398 | Do not interpret any more arguments as options. |
399 | ||
66a25a72 AM |
400 | <pathspec>...:: |
401 | When pathspec is given on the command line, commit the contents of | |
402 | the files that match the pathspec without recording the changes | |
403 | already added to the index. The contents of these files are also | |
404 | staged for the next commit on top of what have been staged before. | |
405 | + | |
406 | For more details, see the 'pathspec' entry in linkgit:gitglossary[7]. | |
3ae854c3 | 407 | |
6c96753d JH |
408 | EXAMPLES |
409 | -------- | |
410 | When recording your own work, the contents of modified files in | |
411 | your working tree are temporarily stored to a staging area | |
0b444cdb | 412 | called the "index" with 'git add'. A file can be |
97e9a221 | 413 | reverted back, only in the index but not in the working tree, |
80f537f7 | 414 | to that of the last commit with `git restore --staged <file>`, |
0b444cdb | 415 | which effectively reverts 'git add' and prevents the changes to |
97e9a221 JX |
416 | this file from participating in the next commit. After building |
417 | the state to be committed incrementally with these commands, | |
418 | `git commit` (without any pathname parameter) is used to record what | |
6c96753d JH |
419 | has been staged so far. This is the most basic form of the |
420 | command. An example: | |
421 | ||
422 | ------------ | |
423 | $ edit hello.c | |
424 | $ git rm goodbye.c | |
425 | $ git add hello.c | |
426 | $ git commit | |
427 | ------------ | |
428 | ||
6c96753d JH |
429 | Instead of staging files after each individual change, you can |
430 | tell `git commit` to notice the changes to the files whose | |
431 | contents are tracked in | |
432 | your working tree and do corresponding `git add` and `git rm` | |
433 | for you. That is, this example does the same as the earlier | |
434 | example if there is no other change in your working tree: | |
435 | ||
436 | ------------ | |
437 | $ edit hello.c | |
438 | $ rm goodbye.c | |
439 | $ git commit -a | |
440 | ------------ | |
441 | ||
442 | The command `git commit -a` first looks at your working tree, | |
443 | notices that you have modified hello.c and removed goodbye.c, | |
444 | and performs necessary `git add` and `git rm` for you. | |
445 | ||
446 | After staging changes to many files, you can alter the order the | |
447 | changes are recorded in, by giving pathnames to `git commit`. | |
448 | When pathnames are given, the command makes a commit that | |
449 | only records the changes made to the named paths: | |
450 | ||
451 | ------------ | |
452 | $ edit hello.c hello.h | |
453 | $ git add hello.c hello.h | |
454 | $ edit Makefile | |
455 | $ git commit Makefile | |
456 | ------------ | |
457 | ||
458 | This makes a commit that records the modification to `Makefile`. | |
459 | The changes staged for `hello.c` and `hello.h` are not included | |
460 | in the resulting commit. However, their changes are not lost -- | |
461 | they are still staged and merely held back. After the above | |
462 | sequence, if you do: | |
463 | ||
464 | ------------ | |
465 | $ git commit | |
466 | ------------ | |
467 | ||
468 | this second commit would record the changes to `hello.c` and | |
469 | `hello.h` as expected. | |
470 | ||
0b444cdb | 471 | After a merge (initiated by 'git merge' or 'git pull') stops |
483bc4f0 | 472 | because of conflicts, cleanly merged |
6c96753d JH |
473 | paths are already staged to be committed for you, and paths that |
474 | conflicted are left in unmerged state. You would have to first | |
0b444cdb | 475 | check which paths are conflicting with 'git status' |
6c96753d | 476 | and after fixing them manually in your working tree, you would |
0b444cdb | 477 | stage the result as usual with 'git add': |
6c96753d JH |
478 | |
479 | ------------ | |
480 | $ git status | grep unmerged | |
481 | unmerged: hello.c | |
482 | $ edit hello.c | |
483 | $ git add hello.c | |
484 | ------------ | |
485 | ||
486 | After resolving conflicts and staging the result, `git ls-files -u` | |
487 | would stop mentioning the conflicted path. When you are done, | |
488 | run `git commit` to finally record the merge: | |
489 | ||
490 | ------------ | |
491 | $ git commit | |
492 | ------------ | |
493 | ||
494 | As with the case to record your own changes, you can use `-a` | |
495 | option to save typing. One difference is that during a merge | |
496 | resolution, you cannot use `git commit` with pathnames to | |
497 | alter the order the changes are committed, because the merge | |
498 | should be recorded as a single commit. In fact, the command | |
499 | refuses to run when given pathnames (but see `-i` option). | |
500 | ||
bc94e586 | 501 | COMMIT INFORMATION |
502 | ------------------ | |
503 | ||
504 | Author and committer information is taken from the following environment | |
505 | variables, if set: | |
506 | ||
507 | GIT_AUTHOR_NAME | |
508 | GIT_AUTHOR_EMAIL | |
509 | GIT_AUTHOR_DATE | |
510 | GIT_COMMITTER_NAME | |
511 | GIT_COMMITTER_EMAIL | |
512 | GIT_COMMITTER_DATE | |
513 | ||
514 | (nb "<", ">" and "\n"s are stripped) | |
515 | ||
69e104d7 | 516 | The author and committer names are by convention some form of a personal name |
517 | (that is, the name by which other humans refer to you), although Git does not | |
518 | enforce or require any particular form. Arbitrary Unicode may be used, subject | |
519 | to the constraints listed above. This name has no effect on authentication; for | |
520 | that, see the `credential.username` variable in linkgit:git-config[1]. | |
521 | ||
bc94e586 | 522 | In case (some of) these environment variables are not set, the information |
523 | is taken from the configuration items `user.name` and `user.email`, or, if not | |
524 | present, the environment variable EMAIL, or, if that is not set, | |
525 | system user name and the hostname used for outgoing mail (taken | |
526 | from `/etc/mailname` and falling back to the fully qualified hostname when | |
527 | that file does not exist). | |
528 | ||
813f6025 | 529 | The `author.name` and `committer.name` and their corresponding email options |
530 | override `user.name` and `user.email` if set and are overridden themselves by | |
531 | the environment variables. | |
532 | ||
533 | The typical usage is to set just the `user.name` and `user.email` variables; | |
534 | the other options are provided for more complex use cases. | |
535 | ||
bc94e586 | 536 | :git-commit: 1 |
537 | include::date-formats.txt[] | |
6c96753d | 538 | |
5dc7bcc2 JH |
539 | DISCUSSION |
540 | ---------- | |
541 | ||
936f32d3 JH |
542 | Though not required, it's a good idea to begin the commit message |
543 | with a single short (less than 50 character) line summarizing the | |
544 | change, followed by a blank line and then a more thorough description. | |
52ffe995 | 545 | The text up to the first blank line in a commit message is treated |
2de9b711 | 546 | as the commit title, and that title is used throughout Git. |
52ffe995 JW |
547 | For example, linkgit:git-format-patch[1] turns a commit into email, and it uses |
548 | the title on the Subject line and the rest of the commit in the body. | |
936f32d3 | 549 | |
5dc7bcc2 JH |
550 | include::i18n.txt[] |
551 | ||
ef0c2abf AR |
552 | ENVIRONMENT AND CONFIGURATION VARIABLES |
553 | --------------------------------------- | |
554 | The editor used to edit the commit log message will be chosen from the | |
47d81b5c TR |
555 | `GIT_EDITOR` environment variable, the core.editor configuration variable, the |
556 | `VISUAL` environment variable, or the `EDITOR` environment variable (in that | |
b4479f07 | 557 | order). See linkgit:git-var[1] for details. |
6c96753d JH |
558 | |
559 | HOOKS | |
560 | ----- | |
8089c85b | 561 | This command can run `commit-msg`, `prepare-commit-msg`, `pre-commit`, |
baced9e4 | 562 | `post-commit` and `post-rewrite` hooks. See linkgit:githooks[5] for more |
6c96753d | 563 | information. |
130fcca6 | 564 | |
41f597d9 JK |
565 | FILES |
566 | ----- | |
567 | ||
568 | `$GIT_DIR/COMMIT_EDITMSG`:: | |
569 | This file contains the commit message of a commit in progress. | |
570 | If `git commit` exits due to an error before creating a commit, | |
571 | any commit message that has been provided by the user (e.g., in | |
572 | an editor session) will be available in this file, but will be | |
573 | overwritten by the next invocation of `git commit`. | |
130fcca6 | 574 | |
6c96753d JH |
575 | SEE ALSO |
576 | -------- | |
5162e697 DM |
577 | linkgit:git-add[1], |
578 | linkgit:git-rm[1], | |
579 | linkgit:git-mv[1], | |
580 | linkgit:git-merge[1], | |
581 | linkgit:git-commit-tree[1] | |
130fcca6 | 582 | |
62033318 JH |
583 | GIT |
584 | --- | |
9e1f0a85 | 585 | Part of the linkgit:git[1] suite |