Junio C Hamano | 215a7ad | 2005-09-07 17:26:23 -0700 | [diff] [blame] | 1 | git-commit(1) |
| 2 | ============= |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 3 | |
| 4 | NAME |
| 5 | ---- |
Junio C Hamano | c3f0baa | 2007-01-18 15:53:37 -0800 | [diff] [blame] | 6 | git-commit - Record changes to the repository |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 7 | |
| 8 | SYNOPSIS |
| 9 | -------- |
Jonas Fonseca | 353ce81 | 2005-12-31 18:37:15 +0100 | [diff] [blame] | 10 | [verse] |
Conrad Irwin | b4bd466 | 2011-05-07 10:58:07 -0700 | [diff] [blame] | 11 | 'git commit' [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend] |
| 12 | [--dry-run] [(-c | -C | --fixup | --squash) <commit>] |
| 13 | [-F <file> | -m <msg>] [--reset-author] [--allow-empty] |
| 14 | [--allow-empty-message] [--no-verify] [-e] [--author=<author>] |
Felipe Contreras | 0460ed2 | 2013-05-08 20:16:55 -0500 | [diff] [blame] | 15 | [--date=<date>] [--cleanup=<mode>] [--[no-]status] |
Junio C Hamano | e703d71 | 2014-03-23 15:58:12 -0700 | [diff] [blame] | 16 | [-i | -o] [-S[<key-id>]] [--] [<file>...] |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 17 | |
| 18 | DESCRIPTION |
| 19 | ----------- |
Jonathan Nieder | d69806d | 2008-07-03 00:13:45 -0500 | [diff] [blame] | 20 | Stores the current contents of the index in a new commit along |
| 21 | with a log message from the user describing the changes. |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 22 | |
J. Bruce Fields | a76c2ac | 2007-08-06 00:34:02 -0400 | [diff] [blame] | 23 | The content to be added can be specified in several ways: |
David Kastrup | f9935bf | 2007-08-06 14:56:32 +0200 | [diff] [blame] | 24 | |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 25 | 1. by using 'git add' to incrementally "add" changes to the |
J. Bruce Fields | a76c2ac | 2007-08-06 00:34:02 -0400 | [diff] [blame] | 26 | index before using the 'commit' command (Note: even modified |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 27 | files must be "added"); |
Jon Loeliger | 5bfc4f2 | 2006-03-17 18:25:09 -0600 | [diff] [blame] | 28 | |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 29 | 2. by using 'git rm' to remove files from the working tree |
J. Bruce Fields | a76c2ac | 2007-08-06 00:34:02 -0400 | [diff] [blame] | 30 | and the index, again before using the 'commit' command; |
Jon Loeliger | 5bfc4f2 | 2006-03-17 18:25:09 -0600 | [diff] [blame] | 31 | |
J. Bruce Fields | a76c2ac | 2007-08-06 00:34:02 -0400 | [diff] [blame] | 32 | 3. by listing files as arguments to the 'commit' command, in which |
| 33 | case the commit will ignore changes staged in the index, and instead |
Mark Burton | 6fc4a7e | 2008-11-18 22:33:44 +0000 | [diff] [blame] | 34 | record the current content of the listed files (which must already |
Thomas Ackermann | 2de9b71 | 2013-01-21 20:17:53 +0100 | [diff] [blame] | 35 | be known to Git); |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 36 | |
J. Bruce Fields | a76c2ac | 2007-08-06 00:34:02 -0400 | [diff] [blame] | 37 | 4. by using the -a switch with the 'commit' command to automatically |
| 38 | "add" changes from all known files (i.e. all files that are already |
| 39 | listed in the index) and to automatically "rm" files in the index |
| 40 | that have been removed from the working tree, and then perform the |
| 41 | actual commit; |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 42 | |
Conrad Irwin | b4bd466 | 2011-05-07 10:58:07 -0700 | [diff] [blame] | 43 | 5. by using the --interactive or --patch switches with the 'commit' command |
| 44 | to decide one by one which files or hunks should be part of the commit, |
Jeff King | 6cf378f | 2012-04-26 04:51:57 -0400 | [diff] [blame] | 45 | before finalizing the operation. See the ``Interactive Mode'' section of |
Conrad Irwin | b4bd466 | 2011-05-07 10:58:07 -0700 | [diff] [blame] | 46 | linkgit:git-add[1] to learn how to operate these modes. |
Paolo Bonzini | 6cbf07e | 2007-03-05 08:57:53 +0100 | [diff] [blame] | 47 | |
Junio C Hamano | 60c2993 | 2009-08-15 01:58:37 -0700 | [diff] [blame] | 48 | The `--dry-run` option can be used to obtain a |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 49 | summary of what is included by any of the above for the next |
Junio C Hamano | 60c2993 | 2009-08-15 01:58:37 -0700 | [diff] [blame] | 50 | commit by giving the same set of parameters (options and paths). |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 51 | |
Jonathan Nieder | 483bc4f | 2008-06-30 13:56:34 -0500 | [diff] [blame] | 52 | If you make a commit and then find a mistake immediately after |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 53 | that, you can recover from it with 'git reset'. |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 54 | |
Junio C Hamano | 6d35cc7 | 2005-09-02 21:19:26 -0700 | [diff] [blame] | 55 | |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 56 | OPTIONS |
| 57 | ------- |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 58 | -a:: |
| 59 | --all:: |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 60 | Tell the command to automatically stage files that have |
| 61 | been modified and deleted, but new files you have not |
Thomas Ackermann | 2de9b71 | 2013-01-21 20:17:53 +0100 | [diff] [blame] | 62 | told Git about are not affected. |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 63 | |
Conrad Irwin | b4bd466 | 2011-05-07 10:58:07 -0700 | [diff] [blame] | 64 | -p:: |
| 65 | --patch:: |
| 66 | Use the interactive patch selection interface to chose |
| 67 | which changes to commit. See linkgit:git-add[1] for |
| 68 | details. |
| 69 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 70 | -C <commit>:: |
| 71 | --reuse-message=<commit>:: |
Stephan Beyer | bc47c29 | 2008-06-08 03:36:08 +0200 | [diff] [blame] | 72 | Take an existing commit object, and reuse the log message |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 73 | and the authorship information (including the timestamp) |
Stephan Beyer | bc47c29 | 2008-06-08 03:36:08 +0200 | [diff] [blame] | 74 | when creating the commit. |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 75 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 76 | -c <commit>:: |
| 77 | --reedit-message=<commit>:: |
Stephan Beyer | bc47c29 | 2008-06-08 03:36:08 +0200 | [diff] [blame] | 78 | Like '-C', but with '-c' the editor is invoked, so that |
| 79 | the user can further edit the commit message. |
| 80 | |
Pat Notz | d71b8ba | 2010-11-02 13:59:09 -0600 | [diff] [blame] | 81 | --fixup=<commit>:: |
| 82 | Construct a commit message for use with `rebase --autosquash`. |
| 83 | The commit message will be the subject line from the specified |
| 84 | commit with a prefix of "fixup! ". See linkgit:git-rebase[1] |
| 85 | for details. |
| 86 | |
Pat Notz | 89ac122 | 2010-11-02 13:59:11 -0600 | [diff] [blame] | 87 | --squash=<commit>:: |
| 88 | Construct a commit message for use with `rebase --autosquash`. |
| 89 | The commit message subject line is taken from the specified |
| 90 | commit with a prefix of "squash! ". Can be used with additional |
| 91 | commit message options (`-m`/`-c`/`-C`/`-F`). See |
| 92 | linkgit:git-rebase[1] for details. |
| 93 | |
Erick Mattos | c51f6ce | 2009-11-04 01:20:11 -0200 | [diff] [blame] | 94 | --reset-author:: |
Jay Soffian | 37f7a85 | 2011-02-19 23:12:29 -0500 | [diff] [blame] | 95 | When used with -C/-c/--amend options, or when committing after a |
| 96 | a conflicting cherry-pick, declare that the authorship of the |
Junio C Hamano | 1fd63ca | 2015-06-01 12:45:12 -0700 | [diff] [blame] | 97 | resulting commit now belongs to the committer. This also renews |
Jay Soffian | 37f7a85 | 2011-02-19 23:12:29 -0500 | [diff] [blame] | 98 | the author timestamp. |
Erick Mattos | c51f6ce | 2009-11-04 01:20:11 -0200 | [diff] [blame] | 99 | |
Jeff King | 7c9f703 | 2009-09-05 04:59:56 -0400 | [diff] [blame] | 100 | --short:: |
| 101 | When doing a dry-run, give the output in the short-format. See |
| 102 | linkgit:git-status[1] for details. Implies `--dry-run`. |
| 103 | |
Ramkumar Ramachandra | e858af6 | 2012-06-08 15:48:30 +0530 | [diff] [blame] | 104 | --branch:: |
| 105 | Show the branch and tracking info even in short-format. |
| 106 | |
Jeff King | 7c9f703 | 2009-09-05 04:59:56 -0400 | [diff] [blame] | 107 | --porcelain:: |
| 108 | When doing a dry-run, give the output in a porcelain-ready |
| 109 | format. See linkgit:git-status[1] for details. Implies |
| 110 | `--dry-run`. |
| 111 | |
Jeff King | f3f47a1 | 2012-10-18 21:15:50 +0700 | [diff] [blame] | 112 | --long:: |
| 113 | When doing a dry-run, give the output in a the long-format. |
| 114 | Implies `--dry-run`. |
| 115 | |
Jeff King | 7c9f703 | 2009-09-05 04:59:56 -0400 | [diff] [blame] | 116 | -z:: |
Ramkumar Ramachandra | e858af6 | 2012-06-08 15:48:30 +0530 | [diff] [blame] | 117 | --null:: |
Jeff King | 7c9f703 | 2009-09-05 04:59:56 -0400 | [diff] [blame] | 118 | When showing `short` or `porcelain` status output, terminate |
| 119 | entries in the status output with NUL, instead of LF. If no |
| 120 | format is given, implies the `--porcelain` output format. |
| 121 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 122 | -F <file>:: |
| 123 | --file=<file>:: |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 124 | Take the commit message from the given file. Use '-' to |
| 125 | read the message from the standard input. |
| 126 | |
Stephan Beyer | c4a7ff5 | 2008-06-07 13:06:45 +0200 | [diff] [blame] | 127 | --author=<author>:: |
Jay Soffian | 3334729 | 2010-06-06 19:31:34 -0400 | [diff] [blame] | 128 | Override the commit author. Specify an explicit author using the |
| 129 | standard `A U Thor <author@example.com>` format. Otherwise <author> |
| 130 | is assumed to be a pattern and is used to search for an existing |
| 131 | commit by that author (i.e. rev-list --all -i --author=<author>); |
| 132 | the commit author is then copied from the first such commit found. |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 133 | |
Miklos Vajna | 02b47cd | 2009-12-02 23:16:18 +0100 | [diff] [blame] | 134 | --date=<date>:: |
| 135 | Override the author date used in the commit. |
| 136 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 137 | -m <msg>:: |
| 138 | --message=<msg>:: |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 139 | Use the given <msg> as the commit message. |
Christian Helmuth | 6bf6366 | 2013-03-27 15:19:35 +0100 | [diff] [blame] | 140 | If multiple `-m` options are given, their values are |
| 141 | concatenated as separate paragraphs. |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 142 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 143 | -t <file>:: |
| 144 | --template=<file>:: |
Junio C Hamano | 1f08c2c | 2012-04-03 16:41:21 -0700 | [diff] [blame] | 145 | When editing the commit message, start the editor with the |
| 146 | contents in the given file. The `commit.template` configuration |
| 147 | variable is often used to give this option implicitly to the |
| 148 | command. This mechanism can be used by projects that want to |
| 149 | guide participants with some hints on what to write in the message |
| 150 | in what order. If the user exits the editor without editing the |
| 151 | message, the commit is aborted. This has no effect when a message |
| 152 | is given by other means, e.g. with the `-m` or `-F` options. |
Steven Grimm | d1cc130 | 2007-07-22 21:17:42 -0700 | [diff] [blame] | 153 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 154 | -s:: |
| 155 | --signoff:: |
Ralf Wildenhues | a0178ae | 2008-11-27 08:32:01 +0100 | [diff] [blame] | 156 | Add Signed-off-by line by the committer at the end of the commit |
Abhijit Bhopatkar | 09cff06 | 2008-10-19 09:49:23 +0530 | [diff] [blame] | 157 | log message. |
Junio C Hamano | 3f971fc | 2005-08-14 17:24:36 -0700 | [diff] [blame] | 158 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 159 | -n:: |
| 160 | --no-verify:: |
Wincent Colaiuta | aa6da6c | 2007-12-08 12:38:08 +0100 | [diff] [blame] | 161 | This option bypasses the pre-commit and commit-msg hooks. |
Jonathan Nieder | 6998e4d | 2008-06-30 17:01:21 -0500 | [diff] [blame] | 162 | See also linkgit:githooks[5]. |
Nikolai Weibull | eaa54ef | 2005-12-09 00:28:05 +0100 | [diff] [blame] | 163 | |
Junio C Hamano | 36863af | 2007-12-03 00:03:10 -0800 | [diff] [blame] | 164 | --allow-empty:: |
| 165 | Usually recording a commit that has the exact same tree as its |
Junio C Hamano | 17ef10d | 2007-12-03 13:35:26 -0800 | [diff] [blame] | 166 | sole parent commit is a mistake, and the command prevents you |
| 167 | from making such a commit. This option bypasses the safety, and |
Ville Skyttä | 6b677a2 | 2010-07-20 00:17:17 +0300 | [diff] [blame] | 168 | is primarily for use by foreign SCM interface scripts. |
Junio C Hamano | 36863af | 2007-12-03 00:03:10 -0800 | [diff] [blame] | 169 | |
Ævar Arnfjörð Bjarmason | c9b5fde | 2010-04-06 08:40:35 +0000 | [diff] [blame] | 170 | --allow-empty-message:: |
| 171 | Like --allow-empty this command is primarily for use by foreign |
Ville Skyttä | 6b677a2 | 2010-07-20 00:17:17 +0300 | [diff] [blame] | 172 | SCM interface scripts. It allows you to create a commit with an |
Ævar Arnfjörð Bjarmason | c9b5fde | 2010-04-06 08:40:35 +0000 | [diff] [blame] | 173 | empty commit message without using plumbing commands like |
| 174 | linkgit:git-commit-tree[1]. |
| 175 | |
Alex Riesen | 5f06573 | 2007-12-22 19:46:24 +0100 | [diff] [blame] | 176 | --cleanup=<mode>:: |
Brandon Casey | 46fbf75 | 2013-02-19 10:14:13 -0800 | [diff] [blame] | 177 | This option determines how the supplied commit message should be |
| 178 | cleaned up before committing. The '<mode>' can be `strip`, |
Nguyễn Thái Ngọc Duy | 75df1f4 | 2014-02-17 19:15:32 +0700 | [diff] [blame] | 179 | `whitespace`, `verbatim`, `scissors` or `default`. |
Brandon Casey | 46fbf75 | 2013-02-19 10:14:13 -0800 | [diff] [blame] | 180 | + |
| 181 | -- |
| 182 | strip:: |
Fredrik Gustafsson | 9a35c14 | 2015-04-25 07:42:45 +0200 | [diff] [blame] | 183 | Strip leading and trailing empty lines, trailing whitespace, |
| 184 | commentary and collapse consecutive empty lines. |
Brandon Casey | 46fbf75 | 2013-02-19 10:14:13 -0800 | [diff] [blame] | 185 | whitespace:: |
| 186 | Same as `strip` except #commentary is not removed. |
| 187 | verbatim:: |
| 188 | Do not change the message at all. |
Nguyễn Thái Ngọc Duy | 75df1f4 | 2014-02-17 19:15:32 +0700 | [diff] [blame] | 189 | scissors:: |
| 190 | Same as `whitespace`, except that everything from (and |
| 191 | including) the line |
| 192 | "`# ------------------------ >8 ------------------------`" |
| 193 | is truncated if the message is to be edited. "`#`" can be |
| 194 | customized with core.commentChar. |
Brandon Casey | 46fbf75 | 2013-02-19 10:14:13 -0800 | [diff] [blame] | 195 | default:: |
| 196 | Same as `strip` if the message is to be edited. |
| 197 | Otherwise `whitespace`. |
| 198 | -- |
| 199 | + |
| 200 | The default can be changed by the 'commit.cleanup' configuration |
| 201 | variable (see linkgit:git-config[1]). |
Alex Riesen | 5f06573 | 2007-12-22 19:46:24 +0100 | [diff] [blame] | 202 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 203 | -e:: |
| 204 | --edit:: |
Junio C Hamano | 6d35cc7 | 2005-09-02 21:19:26 -0700 | [diff] [blame] | 205 | The message taken from file with `-F`, command line with |
Anders Granskogen Bjørnstad | 9a3e36c | 2013-05-02 20:24:15 +0200 | [diff] [blame] | 206 | `-m`, and from commit object with `-C` are usually used as |
| 207 | the commit log message unmodified. This option lets you |
Junio C Hamano | 6d35cc7 | 2005-09-02 21:19:26 -0700 | [diff] [blame] | 208 | further edit the message taken from these sources. |
| 209 | |
Matthieu Moy | ae45320 | 2012-11-02 11:39:30 +0100 | [diff] [blame] | 210 | --no-edit:: |
| 211 | Use the selected commit message without launching an editor. |
| 212 | For example, `git commit --amend --no-edit` amends a commit |
| 213 | without changing its commit message. |
| 214 | |
Marco Roeland | ae5d847 | 2006-04-05 22:28:28 +0200 | [diff] [blame] | 215 | --amend:: |
Carlos Martín Nieto | aa7b8c6 | 2013-04-03 15:07:21 +0200 | [diff] [blame] | 216 | Replace the tip of the current branch by creating a new |
| 217 | commit. The recorded tree is prepared as usual (including |
| 218 | the effect of the `-i` and `-o` options and explicit |
| 219 | pathspec), and the message from the original commit is used |
| 220 | as the starting point, instead of an empty message, when no |
| 221 | other message is specified from the command line via options |
| 222 | such as `-m`, `-F`, `-c`, etc. The new commit has the same |
| 223 | parents and author as the current one (the `--reset-author` |
| 224 | option can countermand this). |
Marco Roeland | ae5d847 | 2006-04-05 22:28:28 +0200 | [diff] [blame] | 225 | + |
Francis Daly | 6cbd5d7 | 2006-04-05 23:25:17 +0100 | [diff] [blame] | 226 | -- |
Marco Roeland | ae5d847 | 2006-04-05 22:28:28 +0200 | [diff] [blame] | 227 | It is a rough equivalent for: |
Francis Daly | 6cbd5d7 | 2006-04-05 23:25:17 +0100 | [diff] [blame] | 228 | ------ |
Marco Roeland | ae5d847 | 2006-04-05 22:28:28 +0200 | [diff] [blame] | 229 | $ git reset --soft HEAD^ |
| 230 | $ ... do something else to come up with the right tree ... |
| 231 | $ git commit -c ORIG_HEAD |
Francis Daly | 6cbd5d7 | 2006-04-05 23:25:17 +0100 | [diff] [blame] | 232 | |
| 233 | ------ |
Marco Roeland | ae5d847 | 2006-04-05 22:28:28 +0200 | [diff] [blame] | 234 | but can be used to amend a merge commit. |
Francis Daly | 6cbd5d7 | 2006-04-05 23:25:17 +0100 | [diff] [blame] | 235 | -- |
Thomas Rast | 97c33c6 | 2008-09-13 18:11:01 +0200 | [diff] [blame] | 236 | + |
| 237 | You should understand the implications of rewriting history if you |
| 238 | amend a commit that has already been published. (See the "RECOVERING |
| 239 | FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].) |
Marco Roeland | ae5d847 | 2006-04-05 22:28:28 +0200 | [diff] [blame] | 240 | |
Andreas Schwab | 77effef | 2012-11-02 13:26:47 +0100 | [diff] [blame] | 241 | --no-post-rewrite:: |
| 242 | Bypass the post-rewrite hook. |
| 243 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 244 | -i:: |
| 245 | --include:: |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 246 | Before making a commit out of staged contents so far, |
| 247 | stage the contents of paths given on the command line |
| 248 | as well. This is usually not what you want unless you |
| 249 | are concluding a conflicted merge. |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 250 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 251 | -o:: |
| 252 | --only:: |
Junio C Hamano | d956a20 | 2014-11-07 11:55:40 -0800 | [diff] [blame] | 253 | Make a commit by taking the updated working tree contents |
| 254 | of the paths specified on the |
Johannes Sixt | d4ba07c | 2008-04-10 13:33:09 +0200 | [diff] [blame] | 255 | command line, disregarding any contents that have been |
Junio C Hamano | d956a20 | 2014-11-07 11:55:40 -0800 | [diff] [blame] | 256 | staged for other paths. This is the default mode of operation of |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 257 | 'git commit' if any paths are given on the command line, |
Johannes Sixt | d4ba07c | 2008-04-10 13:33:09 +0200 | [diff] [blame] | 258 | in which case this option can be omitted. |
| 259 | If this option is specified together with '--amend', then |
Markus Heidelberg | 04c8ce9 | 2008-12-19 13:14:18 +0100 | [diff] [blame] | 260 | no paths need to be specified, which can be used to amend |
Johannes Sixt | d4ba07c | 2008-04-10 13:33:09 +0200 | [diff] [blame] | 261 | the last commit without committing changes that have |
| 262 | already been staged. |
| 263 | |
Junio C Hamano | 1947bdb | 2008-06-22 14:32:27 -0700 | [diff] [blame] | 264 | -u[<mode>]:: |
| 265 | --untracked-files[=<mode>]:: |
Clemens Buchacher | 4cc6260 | 2011-02-21 21:05:25 +0100 | [diff] [blame] | 266 | Show untracked files. |
Marius Storm-Olsen | 4bfee30 | 2008-06-05 10:31:19 +0200 | [diff] [blame] | 267 | + |
Clemens Buchacher | 4cc6260 | 2011-02-21 21:05:25 +0100 | [diff] [blame] | 268 | The mode parameter is optional (defaults to 'all'), and is used to |
| 269 | specify the handling of untracked files; when -u is not used, the |
| 270 | default is 'normal', i.e. show untracked files and directories. |
Marius Storm-Olsen | 4bfee30 | 2008-06-05 10:31:19 +0200 | [diff] [blame] | 271 | + |
Jacob Helwig | e9e9219 | 2010-02-15 04:33:06 -0800 | [diff] [blame] | 272 | The possible options are: |
| 273 | + |
Marius Storm-Olsen | 6c2ce04 | 2008-06-05 14:22:56 +0200 | [diff] [blame] | 274 | - 'no' - Show no untracked files |
Marius Storm-Olsen | 4bfee30 | 2008-06-05 10:31:19 +0200 | [diff] [blame] | 275 | - 'normal' - Shows untracked files and directories |
| 276 | - 'all' - Also shows individual files in untracked directories. |
Marius Storm-Olsen | d6293d1 | 2008-06-05 14:47:50 +0200 | [diff] [blame] | 277 | + |
Clemens Buchacher | 4cc6260 | 2011-02-21 21:05:25 +0100 | [diff] [blame] | 278 | The default can be changed using the status.showUntrackedFiles |
| 279 | configuration variable documented in linkgit:git-config[1]. |
Jakub Narebski | af83bed | 2007-07-13 01:54:08 +0200 | [diff] [blame] | 280 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 281 | -v:: |
| 282 | --verbose:: |
Jakub Narebski | af83bed | 2007-07-13 01:54:08 +0200 | [diff] [blame] | 283 | Show unified diff between the HEAD commit and what |
| 284 | would be committed at the bottom of the commit message |
Fredrik Gustafsson | 9a35c14 | 2015-04-25 07:42:45 +0200 | [diff] [blame] | 285 | template to help the user describe the commit by reminding |
| 286 | what changes the commit has. |
| 287 | Note that this diff output doesn't have its |
| 288 | lines prefixed with '#'. This diff will not be a part |
| 289 | of the commit message. |
Michael J Gruber | 4055500 | 2015-03-06 10:43:35 +0100 | [diff] [blame] | 290 | + |
| 291 | If specified twice, show in addition the unified diff between |
| 292 | what would be committed and the worktree files, i.e. the unstaged |
| 293 | changes to tracked files. |
Jakub Narebski | af83bed | 2007-07-13 01:54:08 +0200 | [diff] [blame] | 294 | |
Stephan Beyer | 3240240 | 2008-06-08 03:36:09 +0200 | [diff] [blame] | 295 | -q:: |
| 296 | --quiet:: |
René Scharfe | 23bfbb8 | 2007-01-17 16:32:41 +0100 | [diff] [blame] | 297 | Suppress commit summary message. |
Nicolas Pitre | ebd124c | 2006-12-14 23:15:44 -0500 | [diff] [blame] | 298 | |
Junio C Hamano | 3a5d13a | 2009-08-07 23:03:36 -0700 | [diff] [blame] | 299 | --dry-run:: |
| 300 | Do not create a commit, but show a list of paths that are |
| 301 | to be committed, paths with local changes that will be left |
| 302 | uncommitted and paths that are untracked. |
| 303 | |
James P. Howard, II | bed575e | 2009-12-07 17:45:27 -0500 | [diff] [blame] | 304 | --status:: |
| 305 | Include the output of linkgit:git-status[1] in the commit |
| 306 | message template when using an editor to prepare the commit |
| 307 | message. Defaults to on, but can be used to override |
| 308 | configuration variable commit.status. |
| 309 | |
| 310 | --no-status:: |
| 311 | Do not include the output of linkgit:git-status[1] in the |
| 312 | commit message template when using an editor to prepare the |
| 313 | default commit message. |
| 314 | |
Tom Jones | 098bbdc | 2012-10-21 20:46:37 +0100 | [diff] [blame] | 315 | -S[<keyid>]:: |
| 316 | --gpg-sign[=<keyid>]:: |
| 317 | GPG-sign commit. |
| 318 | |
Junio C Hamano | 55ca3f9 | 2013-12-13 15:40:35 -0800 | [diff] [blame] | 319 | --no-gpg-sign:: |
Nguyễn Thái Ngọc Duy | da0005b | 2015-03-11 16:32:45 -0400 | [diff] [blame] | 320 | Countermand `commit.gpgSign` configuration variable that is |
Junio C Hamano | 55ca3f9 | 2013-12-13 15:40:35 -0800 | [diff] [blame] | 321 | set to force each and every commit to be signed. |
| 322 | |
sean | e994004 | 2006-05-05 15:05:24 -0400 | [diff] [blame] | 323 | \--:: |
Junio C Hamano | 4170a19 | 2006-02-12 23:55:07 -0800 | [diff] [blame] | 324 | Do not interpret any more arguments as options. |
| 325 | |
| 326 | <file>...:: |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 327 | When files are given on the command line, the command |
| 328 | commits the contents of the named files, without |
| 329 | recording the changes already staged. The contents of |
| 330 | these files are also staged for the next commit on top |
| 331 | of what have been staged before. |
Junio C Hamano | 3ae854c | 2005-12-16 18:23:33 -0800 | [diff] [blame] | 332 | |
Miklos Vajna | 788070a | 2009-12-03 00:49:19 +0100 | [diff] [blame] | 333 | :git-commit: 1 |
| 334 | include::date-formats.txt[] |
Junio C Hamano | 3ae854c | 2005-12-16 18:23:33 -0800 | [diff] [blame] | 335 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 336 | EXAMPLES |
| 337 | -------- |
| 338 | When recording your own work, the contents of modified files in |
| 339 | your working tree are temporarily stored to a staging area |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 340 | called the "index" with 'git add'. A file can be |
Jing Xue | 97e9a22 | 2007-11-11 23:43:00 -0500 | [diff] [blame] | 341 | reverted back, only in the index but not in the working tree, |
Jeff King | 6cf378f | 2012-04-26 04:51:57 -0400 | [diff] [blame] | 342 | to that of the last commit with `git reset HEAD -- <file>`, |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 343 | which effectively reverts 'git add' and prevents the changes to |
Jing Xue | 97e9a22 | 2007-11-11 23:43:00 -0500 | [diff] [blame] | 344 | this file from participating in the next commit. After building |
| 345 | the state to be committed incrementally with these commands, |
| 346 | `git commit` (without any pathname parameter) is used to record what |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 347 | has been staged so far. This is the most basic form of the |
| 348 | command. An example: |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 349 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 350 | ------------ |
| 351 | $ edit hello.c |
| 352 | $ git rm goodbye.c |
| 353 | $ git add hello.c |
| 354 | $ git commit |
| 355 | ------------ |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 356 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 357 | Instead of staging files after each individual change, you can |
| 358 | tell `git commit` to notice the changes to the files whose |
| 359 | contents are tracked in |
| 360 | your working tree and do corresponding `git add` and `git rm` |
| 361 | for you. That is, this example does the same as the earlier |
| 362 | example if there is no other change in your working tree: |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 363 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 364 | ------------ |
| 365 | $ edit hello.c |
| 366 | $ rm goodbye.c |
| 367 | $ git commit -a |
| 368 | ------------ |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 369 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 370 | The command `git commit -a` first looks at your working tree, |
| 371 | notices that you have modified hello.c and removed goodbye.c, |
| 372 | and performs necessary `git add` and `git rm` for you. |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 373 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 374 | After staging changes to many files, you can alter the order the |
| 375 | changes are recorded in, by giving pathnames to `git commit`. |
| 376 | When pathnames are given, the command makes a commit that |
| 377 | only records the changes made to the named paths: |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 378 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 379 | ------------ |
| 380 | $ edit hello.c hello.h |
| 381 | $ git add hello.c hello.h |
| 382 | $ edit Makefile |
| 383 | $ git commit Makefile |
| 384 | ------------ |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 385 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 386 | This makes a commit that records the modification to `Makefile`. |
| 387 | The changes staged for `hello.c` and `hello.h` are not included |
| 388 | in the resulting commit. However, their changes are not lost -- |
| 389 | they are still staged and merely held back. After the above |
| 390 | sequence, if you do: |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 391 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 392 | ------------ |
| 393 | $ git commit |
| 394 | ------------ |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 395 | |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 396 | this second commit would record the changes to `hello.c` and |
| 397 | `hello.h` as expected. |
| 398 | |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 399 | After a merge (initiated by 'git merge' or 'git pull') stops |
Jonathan Nieder | 483bc4f | 2008-06-30 13:56:34 -0500 | [diff] [blame] | 400 | because of conflicts, cleanly merged |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 401 | paths are already staged to be committed for you, and paths that |
| 402 | conflicted are left in unmerged state. You would have to first |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 403 | check which paths are conflicting with 'git status' |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 404 | and after fixing them manually in your working tree, you would |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 405 | stage the result as usual with 'git add': |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 406 | |
| 407 | ------------ |
| 408 | $ git status | grep unmerged |
| 409 | unmerged: hello.c |
| 410 | $ edit hello.c |
| 411 | $ git add hello.c |
| 412 | ------------ |
| 413 | |
| 414 | After resolving conflicts and staging the result, `git ls-files -u` |
| 415 | would stop mentioning the conflicted path. When you are done, |
| 416 | run `git commit` to finally record the merge: |
| 417 | |
| 418 | ------------ |
| 419 | $ git commit |
| 420 | ------------ |
| 421 | |
| 422 | As with the case to record your own changes, you can use `-a` |
| 423 | option to save typing. One difference is that during a merge |
| 424 | resolution, you cannot use `git commit` with pathnames to |
| 425 | alter the order the changes are committed, because the merge |
| 426 | should be recorded as a single commit. In fact, the command |
| 427 | refuses to run when given pathnames (but see `-i` option). |
| 428 | |
| 429 | |
Junio C Hamano | 5dc7bcc | 2006-12-30 02:22:38 -0800 | [diff] [blame] | 430 | DISCUSSION |
| 431 | ---------- |
| 432 | |
Junio C Hamano | 936f32d | 2007-01-16 22:53:28 -0800 | [diff] [blame] | 433 | Though not required, it's a good idea to begin the commit message |
| 434 | with a single short (less than 50 character) line summarizing the |
| 435 | change, followed by a blank line and then a more thorough description. |
Jeremy White | 52ffe99 | 2012-09-13 17:27:09 -0500 | [diff] [blame] | 436 | The text up to the first blank line in a commit message is treated |
Thomas Ackermann | 2de9b71 | 2013-01-21 20:17:53 +0100 | [diff] [blame] | 437 | as the commit title, and that title is used throughout Git. |
Jeremy White | 52ffe99 | 2012-09-13 17:27:09 -0500 | [diff] [blame] | 438 | For example, linkgit:git-format-patch[1] turns a commit into email, and it uses |
| 439 | the title on the Subject line and the rest of the commit in the body. |
Junio C Hamano | 936f32d | 2007-01-16 22:53:28 -0800 | [diff] [blame] | 440 | |
Junio C Hamano | 5dc7bcc | 2006-12-30 02:22:38 -0800 | [diff] [blame] | 441 | include::i18n.txt[] |
| 442 | |
Adam Roben | ef0c2ab | 2007-07-19 22:09:35 -0700 | [diff] [blame] | 443 | ENVIRONMENT AND CONFIGURATION VARIABLES |
| 444 | --------------------------------------- |
| 445 | The editor used to edit the commit log message will be chosen from the |
| 446 | GIT_EDITOR environment variable, the core.editor configuration variable, the |
| 447 | VISUAL environment variable, or the EDITOR environment variable (in that |
Jonathan Nieder | b4479f0 | 2009-10-30 20:42:34 -0500 | [diff] [blame] | 448 | order). See linkgit:git-var[1] for details. |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 449 | |
| 450 | HOOKS |
| 451 | ----- |
Paolo Bonzini | 8089c85 | 2008-02-05 08:04:18 +0100 | [diff] [blame] | 452 | This command can run `commit-msg`, `prepare-commit-msg`, `pre-commit`, |
Jonathan Nieder | 6998e4d | 2008-06-30 17:01:21 -0500 | [diff] [blame] | 453 | and `post-commit` hooks. See linkgit:githooks[5] for more |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 454 | information. |
| 455 | |
Jeff King | 41f597d | 2012-07-23 17:13:12 -0400 | [diff] [blame] | 456 | FILES |
| 457 | ----- |
| 458 | |
| 459 | `$GIT_DIR/COMMIT_EDITMSG`:: |
| 460 | This file contains the commit message of a commit in progress. |
| 461 | If `git commit` exits due to an error before creating a commit, |
| 462 | any commit message that has been provided by the user (e.g., in |
| 463 | an editor session) will be available in this file, but will be |
| 464 | overwritten by the next invocation of `git commit`. |
Junio C Hamano | 6c96753 | 2006-12-08 21:48:07 -0800 | [diff] [blame] | 465 | |
| 466 | SEE ALSO |
| 467 | -------- |
Dan McGee | 5162e69 | 2007-12-29 00:20:38 -0600 | [diff] [blame] | 468 | linkgit:git-add[1], |
| 469 | linkgit:git-rm[1], |
| 470 | linkgit:git-mv[1], |
| 471 | linkgit:git-merge[1], |
| 472 | linkgit:git-commit-tree[1] |
Junio C Hamano | 130fcca | 2006-02-05 00:07:44 -0800 | [diff] [blame] | 473 | |
Junio C Hamano | 6203331 | 2005-08-08 17:39:18 -0700 | [diff] [blame] | 474 | GIT |
| 475 | --- |
Christian Couder | 9e1f0a8 | 2008-06-06 09:07:32 +0200 | [diff] [blame] | 476 | Part of the linkgit:git[1] suite |