| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | git-commit(1) | 
|  | 2 | ============= | 
|  | 3 |  | 
|  | 4 | NAME | 
|  | 5 | ---- | 
| Junio C Hamano | 7c73c66 | 2007-01-19 00:37:50 | [diff] [blame] | 6 | git-commit - Record changes to the repository | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 7 |  | 
|  | 8 | SYNOPSIS | 
|  | 9 | -------- | 
| Junio C Hamano | 235a91e | 2006-01-07 01:13:58 | [diff] [blame] | 10 | [verse] | 
| Junio C Hamano | 3d050d6 | 2011-05-17 06:43:34 | [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>] | 
|  | 15 | [--date=<date>] [--cleanup=<mode>] [--status | --no-status] | 
|  | 16 | [-i | -o] [--] [<file>...] | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 17 |  | 
|  | 18 | DESCRIPTION | 
|  | 19 | ----------- | 
| Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [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 | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 22 |  | 
| Junio C Hamano | bd2b4bb | 2007-08-06 06:42:24 | [diff] [blame] | 23 | The content to be added can be specified in several ways: | 
| Junio C Hamano | b515b6a | 2007-08-08 09:21:16 | [diff] [blame] | 24 |  | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 25 | 1. by using 'git add' to incrementally "add" changes to the | 
| Junio C Hamano | bd2b4bb | 2007-08-06 06:42:24 | [diff] [blame] | 26 | index before using the 'commit' command (Note: even modified | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 27 | files must be "added"); | 
| Junio C Hamano | 2b13527 | 2006-03-18 07:45:42 | [diff] [blame] | 28 |  | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 29 | 2. by using 'git rm' to remove files from the working tree | 
| Junio C Hamano | bd2b4bb | 2007-08-06 06:42:24 | [diff] [blame] | 30 | and the index, again before using the 'commit' command; | 
| Junio C Hamano | 2b13527 | 2006-03-18 07:45:42 | [diff] [blame] | 31 |  | 
| Junio C Hamano | bd2b4bb | 2007-08-06 06:42:24 | [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 | 
| Junio C Hamano | 5081985 | 2008-11-19 02:07:56 | [diff] [blame] | 34 | record the current content of the listed files (which must already | 
|  | 35 | be known to git); | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 36 |  | 
| Junio C Hamano | bd2b4bb | 2007-08-06 06:42:24 | [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 | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 42 |  | 
| Junio C Hamano | 3d050d6 | 2011-05-17 06:43:34 | [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, | 
| Junio C Hamano | b76a686 | 2012-05-02 22:02:46 | [diff] [blame] | 45 | before finalizing the operation. See the ``Interactive Mode'' section of | 
| Junio C Hamano | 3d050d6 | 2011-05-17 06:43:34 | [diff] [blame] | 46 | linkgit:git-add[1] to learn how to operate these modes. | 
| Junio C Hamano | c51fede | 2007-03-12 07:29:20 | [diff] [blame] | 47 |  | 
| Junio C Hamano | 1bb3199 | 2009-08-29 04:24:08 | [diff] [blame] | 48 | The `--dry-run` option can be used to obtain a | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 49 | summary of what is included by any of the above for the next | 
| Junio C Hamano | 1bb3199 | 2009-08-29 04:24:08 | [diff] [blame] | 50 | commit by giving the same set of parameters (options and paths). | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 51 |  | 
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 52 | If you make a commit and then find a mistake immediately after | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 53 | that, you can recover from it with 'git reset'. | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 54 |  | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 55 |  | 
|  | 56 | OPTIONS | 
|  | 57 | ------- | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 58 | -a:: | 
|  | 59 | --all:: | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 60 | Tell the command to automatically stage files that have | 
|  | 61 | been modified and deleted, but new files you have not | 
|  | 62 | told git about are not affected. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 63 |  | 
| Junio C Hamano | 3d050d6 | 2011-05-17 06:43:34 | [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 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 70 | -C <commit>:: | 
|  | 71 | --reuse-message=<commit>:: | 
|  | 72 | Take an existing commit object, and reuse the log message | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 73 | and the authorship information (including the timestamp) | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 74 | when creating the commit. | 
|  | 75 |  | 
|  | 76 | -c <commit>:: | 
|  | 77 | --reedit-message=<commit>:: | 
|  | 78 | Like '-C', but with '-c' the editor is invoked, so that | 
|  | 79 | the user can further edit the commit message. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 80 |  | 
| Junio C Hamano | 2e6ded8 | 2010-12-05 06:20:48 | [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 |  | 
|  | 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 |  | 
| Junio C Hamano | 2bd8a74 | 2009-12-01 21:16:59 | [diff] [blame] | 94 | --reset-author:: | 
| Junio C Hamano | a8cc1d8 | 2011-03-10 01:18:12 | [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 | 
|  | 97 | resulting commit now belongs of the committer. This also renews | 
|  | 98 | the author timestamp. | 
| Junio C Hamano | 2bd8a74 | 2009-12-01 21:16:59 | [diff] [blame] | 99 |  | 
| Junio C Hamano | a0fae26 | 2009-12-28 09:33:50 | [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 |  | 
| Junio C Hamano | 9257a33 | 2012-06-25 20:01:02 | [diff] [blame] | 104 | --branch:: | 
|  | 105 | Show the branch and tracking info even in short-format. | 
|  | 106 |  | 
| Junio C Hamano | a0fae26 | 2009-12-28 09:33:50 | [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 |  | 
|  | 112 | -z:: | 
| Junio C Hamano | 9257a33 | 2012-06-25 20:01:02 | [diff] [blame] | 113 | --null:: | 
| Junio C Hamano | a0fae26 | 2009-12-28 09:33:50 | [diff] [blame] | 114 | When showing `short` or `porcelain` status output, terminate | 
|  | 115 | entries in the status output with NUL, instead of LF. If no | 
|  | 116 | format is given, implies the `--porcelain` output format. | 
|  | 117 |  | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 118 | -F <file>:: | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 119 | --file=<file>:: | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 120 | Take the commit message from the given file. Use '-' to | 
|  | 121 | read the message from the standard input. | 
|  | 122 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 123 | --author=<author>:: | 
| Junio C Hamano | 13002fb | 2010-06-08 05:53:58 | [diff] [blame] | 124 | Override the commit author. Specify an explicit author using the | 
|  | 125 | standard `A U Thor <author@example.com>` format. Otherwise <author> | 
|  | 126 | is assumed to be a pattern and is used to search for an existing | 
|  | 127 | commit by that author (i.e. rev-list --all -i --author=<author>); | 
|  | 128 | the commit author is then copied from the first such commit found. | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 129 |  | 
| Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 130 | --date=<date>:: | 
|  | 131 | Override the author date used in the commit. | 
|  | 132 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 133 | -m <msg>:: | 
|  | 134 | --message=<msg>:: | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 135 | Use the given <msg> as the commit message. | 
|  | 136 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 137 | -t <file>:: | 
|  | 138 | --template=<file>:: | 
| Junio C Hamano | 51f87de | 2012-04-16 21:18:54 | [diff] [blame] | 139 | When editing the commit message, start the editor with the | 
|  | 140 | contents in the given file. The `commit.template` configuration | 
|  | 141 | variable is often used to give this option implicitly to the | 
|  | 142 | command. This mechanism can be used by projects that want to | 
|  | 143 | guide participants with some hints on what to write in the message | 
|  | 144 | in what order. If the user exits the editor without editing the | 
|  | 145 | message, the commit is aborted. This has no effect when a message | 
|  | 146 | is given by other means, e.g. with the `-m` or `-F` options. | 
| Junio C Hamano | a3770f9 | 2007-07-25 08:53:33 | [diff] [blame] | 147 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 148 | -s:: | 
|  | 149 | --signoff:: | 
| Junio C Hamano | 610d176 | 2008-11-28 06:27:13 | [diff] [blame] | 150 | Add Signed-off-by line by the committer at the end of the commit | 
| Junio C Hamano | 7d06a8a | 2008-10-20 05:42:33 | [diff] [blame] | 151 | log message. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 152 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 153 | -n:: | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 154 | --no-verify:: | 
| Junio C Hamano | 942b35e | 2007-12-09 10:19:33 | [diff] [blame] | 155 | This option bypasses the pre-commit and commit-msg hooks. | 
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 156 | See also linkgit:githooks[5]. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 157 |  | 
| Junio C Hamano | 0c99970 | 2007-12-03 09:57:55 | [diff] [blame] | 158 | --allow-empty:: | 
|  | 159 | Usually recording a commit that has the exact same tree as its | 
| Junio C Hamano | 5825687 | 2007-12-04 08:31:13 | [diff] [blame] | 160 | sole parent commit is a mistake, and the command prevents you | 
|  | 161 | from making such a commit. This option bypasses the safety, and | 
| Junio C Hamano | 619596a | 2010-08-18 22:15:35 | [diff] [blame] | 162 | is primarily for use by foreign SCM interface scripts. | 
| Junio C Hamano | 0c99970 | 2007-12-03 09:57:55 | [diff] [blame] | 163 |  | 
| Junio C Hamano | cb39aea | 2010-05-09 07:24:48 | [diff] [blame] | 164 | --allow-empty-message:: | 
|  | 165 | Like --allow-empty this command is primarily for use by foreign | 
| Junio C Hamano | 619596a | 2010-08-18 22:15:35 | [diff] [blame] | 166 | SCM interface scripts. It allows you to create a commit with an | 
| Junio C Hamano | cb39aea | 2010-05-09 07:24:48 | [diff] [blame] | 167 | empty commit message without using plumbing commands like | 
|  | 168 | linkgit:git-commit-tree[1]. | 
|  | 169 |  | 
| Junio C Hamano | 554da79 | 2007-12-27 03:29:58 | [diff] [blame] | 170 | --cleanup=<mode>:: | 
|  | 171 | This option sets how the commit message is cleaned up. | 
|  | 172 | The '<mode>' can be one of 'verbatim', 'whitespace', 'strip', | 
|  | 173 | and 'default'. The 'default' mode will strip leading and | 
|  | 174 | trailing empty lines and #commentary from the commit message | 
|  | 175 | only if the message is to be edited. Otherwise only whitespace | 
|  | 176 | removed. The 'verbatim' mode does not change message at all, | 
|  | 177 | 'whitespace' removes just leading/trailing whitespace lines | 
|  | 178 | and 'strip' removes both whitespace and commentary. | 
|  | 179 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 180 | -e:: | 
|  | 181 | --edit:: | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 182 | The message taken from file with `-F`, command line with | 
|  | 183 | `-m`, and from file with `-C` are usually used as the | 
|  | 184 | commit log message unmodified. This option lets you | 
|  | 185 | further edit the message taken from these sources. | 
|  | 186 |  | 
| Junio C Hamano | bfe9e75 | 2006-04-05 21:43:28 | [diff] [blame] | 187 | --amend:: | 
| Junio C Hamano | bfe9e75 | 2006-04-05 21:43:28 | [diff] [blame] | 188 | Used to amend the tip of the current branch. Prepare the tree | 
|  | 189 | object you would want to replace the latest commit as usual | 
|  | 190 | (this includes the usual -i/-o and explicit paths), and the | 
|  | 191 | commit log editor is seeded with the commit message from the | 
|  | 192 | tip of the current branch. The commit you create replaces the | 
|  | 193 | current tip -- if it was a merge, it will have the parents of | 
|  | 194 | the current tip as parents -- so the current top commit is | 
|  | 195 | discarded. | 
| Junio C Hamano | 9257a33 | 2012-06-25 20:01:02 | [diff] [blame] | 196 |  | 
|  | 197 | --no-post-rewrite:: | 
|  | 198 | Bypass the post-rewrite hook. | 
|  | 199 |  | 
| Junio C Hamano | bfe9e75 | 2006-04-05 21:43:28 | [diff] [blame] | 200 | + | 
| Junio C Hamano | 47ea30e | 2006-04-05 23:08:03 | [diff] [blame] | 201 | -- | 
| Junio C Hamano | bfe9e75 | 2006-04-05 21:43:28 | [diff] [blame] | 202 | It is a rough equivalent for: | 
| Junio C Hamano | 47ea30e | 2006-04-05 23:08:03 | [diff] [blame] | 203 | ------ | 
| Junio C Hamano | bfe9e75 | 2006-04-05 21:43:28 | [diff] [blame] | 204 | $ git reset --soft HEAD^ | 
|  | 205 | $ ... do something else to come up with the right tree ... | 
|  | 206 | $ git commit -c ORIG_HEAD | 
| Junio C Hamano | 47ea30e | 2006-04-05 23:08:03 | [diff] [blame] | 207 |  | 
|  | 208 | ------ | 
| Junio C Hamano | bfe9e75 | 2006-04-05 21:43:28 | [diff] [blame] | 209 | but can be used to amend a merge commit. | 
| Junio C Hamano | 47ea30e | 2006-04-05 23:08:03 | [diff] [blame] | 210 | -- | 
| Junio C Hamano | 7d06a8a | 2008-10-20 05:42:33 | [diff] [blame] | 211 | + | 
|  | 212 | You should understand the implications of rewriting history if you | 
|  | 213 | amend a commit that has already been published. (See the "RECOVERING | 
|  | 214 | FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].) | 
| Junio C Hamano | bfe9e75 | 2006-04-05 21:43:28 | [diff] [blame] | 215 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 216 | -i:: | 
|  | 217 | --include:: | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 218 | Before making a commit out of staged contents so far, | 
|  | 219 | stage the contents of paths given on the command line | 
|  | 220 | as well. This is usually not what you want unless you | 
|  | 221 | are concluding a conflicted merge. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 222 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 223 | -o:: | 
|  | 224 | --only:: | 
| Junio C Hamano | e79159d | 2008-04-12 08:23:17 | [diff] [blame] | 225 | Make a commit only from the paths specified on the | 
|  | 226 | command line, disregarding any contents that have been | 
|  | 227 | staged so far. This is the default mode of operation of | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 228 | 'git commit' if any paths are given on the command line, | 
| Junio C Hamano | e79159d | 2008-04-12 08:23:17 | [diff] [blame] | 229 | in which case this option can be omitted. | 
|  | 230 | If this option is specified together with '--amend', then | 
| Junio C Hamano | 54bf1e2 | 2008-12-20 06:30:11 | [diff] [blame] | 231 | no paths need to be specified, which can be used to amend | 
| Junio C Hamano | e79159d | 2008-04-12 08:23:17 | [diff] [blame] | 232 | the last commit without committing changes that have | 
|  | 233 | already been staged. | 
|  | 234 |  | 
| Junio C Hamano | 4224f99 | 2008-06-23 07:14:08 | [diff] [blame] | 235 | -u[<mode>]:: | 
|  | 236 | --untracked-files[=<mode>]:: | 
| Junio C Hamano | 36a4dbc | 2011-02-22 07:51:32 | [diff] [blame] | 237 | Show untracked files. | 
| Junio C Hamano | 4224f99 | 2008-06-23 07:14:08 | [diff] [blame] | 238 | + | 
| Junio C Hamano | 36a4dbc | 2011-02-22 07:51:32 | [diff] [blame] | 239 | The mode parameter is optional (defaults to 'all'), and is used to | 
|  | 240 | specify the handling of untracked files; when -u is not used, the | 
|  | 241 | default is 'normal', i.e. show untracked files and directories. | 
| Junio C Hamano | 4224f99 | 2008-06-23 07:14:08 | [diff] [blame] | 242 | + | 
| Junio C Hamano | e1cca18 | 2010-02-20 20:01:23 | [diff] [blame] | 243 | The possible options are: | 
|  | 244 | + | 
| Junio C Hamano | 4224f99 | 2008-06-23 07:14:08 | [diff] [blame] | 245 | - 'no' - Show no untracked files | 
|  | 246 | - 'normal' - Shows untracked files and directories | 
|  | 247 | - 'all' - Also shows individual files in untracked directories. | 
| Junio C Hamano | 4224f99 | 2008-06-23 07:14:08 | [diff] [blame] | 248 | + | 
| Junio C Hamano | 36a4dbc | 2011-02-22 07:51:32 | [diff] [blame] | 249 | The default can be changed using the status.showUntrackedFiles | 
|  | 250 | configuration variable documented in linkgit:git-config[1]. | 
| Junio C Hamano | 1e6e006 | 2007-07-13 05:33:25 | [diff] [blame] | 251 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 252 | -v:: | 
|  | 253 | --verbose:: | 
| Junio C Hamano | 1e6e006 | 2007-07-13 05:33:25 | [diff] [blame] | 254 | Show unified diff between the HEAD commit and what | 
|  | 255 | would be committed at the bottom of the commit message | 
|  | 256 | template. Note that this diff output doesn't have its | 
|  | 257 | lines prefixed with '#'. | 
|  | 258 |  | 
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 259 | -q:: | 
|  | 260 | --quiet:: | 
| Junio C Hamano | f9771f6 | 2007-01-17 17:42:30 | [diff] [blame] | 261 | Suppress commit summary message. | 
| Junio C Hamano | 7d23f5e | 2006-12-16 07:44:04 | [diff] [blame] | 262 |  | 
| Junio C Hamano | 1bb3199 | 2009-08-29 04:24:08 | [diff] [blame] | 263 | --dry-run:: | 
|  | 264 | Do not create a commit, but show a list of paths that are | 
|  | 265 | to be committed, paths with local changes that will be left | 
|  | 266 | uncommitted and paths that are untracked. | 
|  | 267 |  | 
| Junio C Hamano | 6ce6b6c | 2010-01-18 01:25:50 | [diff] [blame] | 268 | --status:: | 
|  | 269 | Include the output of linkgit:git-status[1] in the commit | 
|  | 270 | message template when using an editor to prepare the commit | 
|  | 271 | message. Defaults to on, but can be used to override | 
|  | 272 | configuration variable commit.status. | 
|  | 273 |  | 
|  | 274 | --no-status:: | 
|  | 275 | Do not include the output of linkgit:git-status[1] in the | 
|  | 276 | commit message template when using an editor to prepare the | 
|  | 277 | default commit message. | 
|  | 278 |  | 
| Junio C Hamano | 1bb569e | 2006-05-05 23:14:25 | [diff] [blame] | 279 | \--:: | 
| Junio C Hamano | 6697ac5 | 2006-02-14 08:00:23 | [diff] [blame] | 280 | Do not interpret any more arguments as options. | 
|  | 281 |  | 
|  | 282 | <file>...:: | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 283 | When files are given on the command line, the command | 
|  | 284 | commits the contents of the named files, without | 
|  | 285 | recording the changes already staged. The contents of | 
|  | 286 | these files are also staged for the next commit on top | 
|  | 287 | of what have been staged before. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 288 |  | 
| Junio C Hamano | ae05fee | 2010-01-08 07:39:46 | [diff] [blame] | 289 | :git-commit: 1 | 
|  | 290 | include::date-formats.txt[] | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 291 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 292 | EXAMPLES | 
|  | 293 | -------- | 
|  | 294 | When recording your own work, the contents of modified files in | 
|  | 295 | your working tree are temporarily stored to a staging area | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 296 | called the "index" with 'git add'. A file can be | 
| Junio C Hamano | 361c133 | 2007-11-14 12:17:22 | [diff] [blame] | 297 | reverted back, only in the index but not in the working tree, | 
| Junio C Hamano | b76a686 | 2012-05-02 22:02:46 | [diff] [blame] | 298 | to that of the last commit with `git reset HEAD -- <file>`, | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 299 | which effectively reverts 'git add' and prevents the changes to | 
| Junio C Hamano | 361c133 | 2007-11-14 12:17:22 | [diff] [blame] | 300 | this file from participating in the next commit. After building | 
|  | 301 | the state to be committed incrementally with these commands, | 
|  | 302 | `git commit` (without any pathname parameter) is used to record what | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 303 | has been staged so far. This is the most basic form of the | 
|  | 304 | command. An example: | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 305 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 306 | ------------ | 
|  | 307 | $ edit hello.c | 
|  | 308 | $ git rm goodbye.c | 
|  | 309 | $ git add hello.c | 
|  | 310 | $ git commit | 
|  | 311 | ------------ | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 312 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 313 | Instead of staging files after each individual change, you can | 
|  | 314 | tell `git commit` to notice the changes to the files whose | 
|  | 315 | contents are tracked in | 
|  | 316 | your working tree and do corresponding `git add` and `git rm` | 
|  | 317 | for you. That is, this example does the same as the earlier | 
|  | 318 | example if there is no other change in your working tree: | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 319 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 320 | ------------ | 
|  | 321 | $ edit hello.c | 
|  | 322 | $ rm goodbye.c | 
|  | 323 | $ git commit -a | 
|  | 324 | ------------ | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 325 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 326 | The command `git commit -a` first looks at your working tree, | 
|  | 327 | notices that you have modified hello.c and removed goodbye.c, | 
|  | 328 | and performs necessary `git add` and `git rm` for you. | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 329 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 330 | After staging changes to many files, you can alter the order the | 
|  | 331 | changes are recorded in, by giving pathnames to `git commit`. | 
|  | 332 | When pathnames are given, the command makes a commit that | 
|  | 333 | only records the changes made to the named paths: | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 334 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 335 | ------------ | 
|  | 336 | $ edit hello.c hello.h | 
|  | 337 | $ git add hello.c hello.h | 
|  | 338 | $ edit Makefile | 
|  | 339 | $ git commit Makefile | 
|  | 340 | ------------ | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 341 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 342 | This makes a commit that records the modification to `Makefile`. | 
|  | 343 | The changes staged for `hello.c` and `hello.h` are not included | 
|  | 344 | in the resulting commit. However, their changes are not lost -- | 
|  | 345 | they are still staged and merely held back. After the above | 
|  | 346 | sequence, if you do: | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 347 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 348 | ------------ | 
|  | 349 | $ git commit | 
|  | 350 | ------------ | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 351 |  | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 352 | this second commit would record the changes to `hello.c` and | 
|  | 353 | `hello.h` as expected. | 
|  | 354 |  | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 355 | After a merge (initiated by 'git merge' or 'git pull') stops | 
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 356 | because of conflicts, cleanly merged | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 357 | paths are already staged to be committed for you, and paths that | 
|  | 358 | conflicted are left in unmerged state. You would have to first | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 359 | check which paths are conflicting with 'git status' | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 360 | and after fixing them manually in your working tree, you would | 
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 361 | stage the result as usual with 'git add': | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 362 |  | 
|  | 363 | ------------ | 
|  | 364 | $ git status | grep unmerged | 
|  | 365 | unmerged: hello.c | 
|  | 366 | $ edit hello.c | 
|  | 367 | $ git add hello.c | 
|  | 368 | ------------ | 
|  | 369 |  | 
|  | 370 | After resolving conflicts and staging the result, `git ls-files -u` | 
|  | 371 | would stop mentioning the conflicted path. When you are done, | 
|  | 372 | run `git commit` to finally record the merge: | 
|  | 373 |  | 
|  | 374 | ------------ | 
|  | 375 | $ git commit | 
|  | 376 | ------------ | 
|  | 377 |  | 
|  | 378 | As with the case to record your own changes, you can use `-a` | 
|  | 379 | option to save typing. One difference is that during a merge | 
|  | 380 | resolution, you cannot use `git commit` with pathnames to | 
|  | 381 | alter the order the changes are committed, because the merge | 
|  | 382 | should be recorded as a single commit. In fact, the command | 
|  | 383 | refuses to run when given pathnames (but see `-i` option). | 
|  | 384 |  | 
|  | 385 |  | 
| Junio C Hamano | 775a0f4 | 2006-12-31 01:19:14 | [diff] [blame] | 386 | DISCUSSION | 
|  | 387 | ---------- | 
|  | 388 |  | 
| Junio C Hamano | 8f76dc6 | 2007-01-17 07:24:25 | [diff] [blame] | 389 | Though not required, it's a good idea to begin the commit message | 
|  | 390 | with a single short (less than 50 character) line summarizing the | 
|  | 391 | change, followed by a blank line and then a more thorough description. | 
|  | 392 | Tools that turn commits into email, for example, use the first line | 
|  | 393 | on the Subject: line and the rest of the commit in the body. | 
|  | 394 |  | 
| Junio C Hamano | 775a0f4 | 2006-12-31 01:19:14 | [diff] [blame] | 395 | include::i18n.txt[] | 
|  | 396 |  | 
| Junio C Hamano | f6002a9 | 2007-07-20 10:28:22 | [diff] [blame] | 397 | ENVIRONMENT AND CONFIGURATION VARIABLES | 
|  | 398 | --------------------------------------- | 
|  | 399 | The editor used to edit the commit log message will be chosen from the | 
|  | 400 | GIT_EDITOR environment variable, the core.editor configuration variable, the | 
|  | 401 | VISUAL environment variable, or the EDITOR environment variable (in that | 
| Junio C Hamano | 3b70d3c | 2009-11-21 17:37:37 | [diff] [blame] | 402 | order). See linkgit:git-var[1] for details. | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 403 |  | 
|  | 404 | HOOKS | 
|  | 405 | ----- | 
| Junio C Hamano | 26e590a | 2008-02-17 03:53:51 | [diff] [blame] | 406 | This command can run `commit-msg`, `prepare-commit-msg`, `pre-commit`, | 
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 407 | and `post-commit` hooks. See linkgit:githooks[5] for more | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 408 | information. | 
|  | 409 |  | 
| Junio C Hamano | 28a85be | 2012-07-24 22:05:15 | [diff] [blame] | 410 | FILES | 
|  | 411 | ----- | 
|  | 412 |  | 
|  | 413 | `$GIT_DIR/COMMIT_EDITMSG`:: | 
|  | 414 | This file contains the commit message of a commit in progress. | 
|  | 415 | If `git commit` exits due to an error before creating a commit, | 
|  | 416 | any commit message that has been provided by the user (e.g., in | 
|  | 417 | an editor session) will be available in this file, but will be | 
|  | 418 | overwritten by the next invocation of `git commit`. | 
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 419 |  | 
|  | 420 | SEE ALSO | 
|  | 421 | -------- | 
| Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 422 | linkgit:git-add[1], | 
|  | 423 | linkgit:git-rm[1], | 
|  | 424 | linkgit:git-mv[1], | 
|  | 425 | linkgit:git-merge[1], | 
|  | 426 | linkgit:git-commit-tree[1] | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 427 |  | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 428 | GIT | 
|  | 429 | --- | 
| Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 430 | Part of the linkgit:git[1] suite |