| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | git-commit(1) | 
|  | 2 | ============= | 
|  | 3 |  | 
|  | 4 | NAME | 
|  | 5 | ---- | 
|  | 6 | git-commit - Record your changes | 
|  | 7 |  | 
|  | 8 | SYNOPSIS | 
|  | 9 | -------- | 
| Junio C Hamano | 235a91e | 2006-01-07 01:13:58 | [diff] [blame] | 10 | [verse] | 
| Junio C Hamano | 6697ac5 | 2006-02-14 08:00:23 | [diff] [blame^] | 11 | 'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>] | 
|  | 12 | [-e] [--author <author>] [--] [[-i | -o ]<file>...] | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 13 |  | 
|  | 14 | DESCRIPTION | 
|  | 15 | ----------- | 
|  | 16 | Updates the index file for given paths, or all modified files if | 
|  | 17 | '-a' is specified, and makes a commit object. The command | 
|  | 18 | VISUAL and EDITOR environment variables to edit the commit log | 
|  | 19 | message. | 
|  | 20 |  | 
|  | 21 | This command can run `commit-msg`, `pre-commit`, and | 
|  | 22 | `post-commit` hooks. See link:hooks.html[hooks] for more | 
|  | 23 | information. | 
|  | 24 |  | 
|  | 25 | OPTIONS | 
|  | 26 | ------- | 
|  | 27 | -a|--all:: | 
| Junio C Hamano | 74e8a2d | 2006-01-14 03:58:41 | [diff] [blame] | 28 | Update all paths in the index file. This flag notices | 
|  | 29 | files that have been modified and deleted, but new files | 
| Junio C Hamano | a6331a8 | 2006-01-22 07:50:33 | [diff] [blame] | 30 | you have not told git about are not affected. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 31 |  | 
|  | 32 | -c or -C <commit>:: | 
|  | 33 | Take existing commit object, and reuse the log message | 
|  | 34 | and the authorship information (including the timestamp) | 
|  | 35 | when creating the commit. With '-C', the editor is not | 
|  | 36 | invoked; with '-c' the user can further edit the commit | 
|  | 37 | message. | 
|  | 38 |  | 
|  | 39 | -F <file>:: | 
|  | 40 | Take the commit message from the given file. Use '-' to | 
|  | 41 | read the message from the standard input. | 
|  | 42 |  | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 43 | --author <author>:: | 
|  | 44 | Override the author name used in the commit. Use | 
|  | 45 | `A U Thor <author@example.com>` format. | 
|  | 46 |  | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 47 | -m <msg>:: | 
|  | 48 | Use the given <msg> as the commit message. | 
|  | 49 |  | 
|  | 50 | -s|--signoff:: | 
|  | 51 | Add Signed-off-by line at the end of the commit message. | 
|  | 52 |  | 
|  | 53 | -v|--verify:: | 
|  | 54 | Look for suspicious lines the commit introduces, and | 
|  | 55 | abort committing if there is one. The definition of | 
|  | 56 | 'suspicious lines' is currently the lines that has | 
|  | 57 | trailing whitespaces, and the lines whose indentation | 
|  | 58 | has a SP character immediately followed by a TAB | 
|  | 59 | character. This is the default. | 
|  | 60 |  | 
|  | 61 | -n|--no-verify:: | 
|  | 62 | The opposite of `--verify`. | 
|  | 63 |  | 
|  | 64 | -e|--edit:: | 
|  | 65 | The message taken from file with `-F`, command line with | 
|  | 66 | `-m`, and from file with `-C` are usually used as the | 
|  | 67 | commit log message unmodified. This option lets you | 
|  | 68 | further edit the message taken from these sources. | 
|  | 69 |  | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 70 | -i|--include:: | 
|  | 71 | Instead of committing only the files specified on the | 
|  | 72 | command line, update them in the index file and then | 
|  | 73 | commit the whole index. This is the traditional | 
|  | 74 | behaviour. | 
|  | 75 |  | 
| Junio C Hamano | 6697ac5 | 2006-02-14 08:00:23 | [diff] [blame^] | 76 | -o|--only:: | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 77 | Commit only the files specified on the command line. | 
|  | 78 | This format cannot be used during a merge, nor when the | 
|  | 79 | index and the latest commit does not match on the | 
|  | 80 | specified paths to avoid confusion. | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 81 |  | 
| Junio C Hamano | 6697ac5 | 2006-02-14 08:00:23 | [diff] [blame^] | 82 | --:: | 
|  | 83 | Do not interpret any more arguments as options. | 
|  | 84 |  | 
|  | 85 | <file>...:: | 
|  | 86 | Files to be committed. The meaning of these is | 
|  | 87 | different between `--include` and `--only`. Without | 
|  | 88 | either, it defaults `--only` semantics. | 
|  | 89 |  | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 90 | If you make a commit and then found a mistake immediately after | 
|  | 91 | that, you can recover from it with gitlink:git-reset[1]. | 
|  | 92 |  | 
|  | 93 |  | 
| Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 94 | Discussion | 
|  | 95 | ---------- | 
|  | 96 |  | 
|  | 97 | `git commit` without _any_ parameter commits the tree structure | 
|  | 98 | recorded by the current index file. This is a whole-tree commit | 
|  | 99 | even the command is invoked from a subdirectory. | 
|  | 100 |  | 
|  | 101 | `git commit --include paths...` is equivalent to | 
|  | 102 |  | 
|  | 103 | git update-index --remove paths... | 
|  | 104 | git commit | 
|  | 105 |  | 
|  | 106 | That is, update the specified paths to the index and then commit | 
|  | 107 | the whole tree. | 
|  | 108 |  | 
|  | 109 | `git commit paths...` largely bypasses the index file and | 
|  | 110 | commits only the changes made to the specified paths. It has | 
|  | 111 | however several safety valves to prevent confusion. | 
|  | 112 |  | 
|  | 113 | . It refuses to run during a merge (i.e. when | 
|  | 114 | `$GIT_DIR/MERGE_HEAD` exists), and reminds trained git users | 
|  | 115 | that the traditional semantics now needs -i flag. | 
|  | 116 |  | 
|  | 117 | . It refuses to run if named `paths...` are different in HEAD | 
|  | 118 | and the index (ditto about reminding). Added paths are OK. | 
|  | 119 | This is because an earlier `git diff` (not `git diff HEAD`) | 
|  | 120 | would have shown the differences since the last `git | 
|  | 121 | update-index paths...` to the user, and an inexperienced user | 
|  | 122 | may mistakenly think that the changes between the index and | 
|  | 123 | the HEAD (i.e. earlier changes made before the last `git | 
|  | 124 | update-index paths...` was done) are not being committed. | 
|  | 125 |  | 
|  | 126 | . It reads HEAD commit into a temporary index file, updates the | 
|  | 127 | specified `paths...` and makes a commit. At the same time, | 
|  | 128 | the real index file is also updated with the same `paths...`. | 
|  | 129 |  | 
|  | 130 | `git commit --all` updates the index file with _all_ changes to | 
|  | 131 | the working tree, and makes a whole-tree commit, regardless of | 
|  | 132 | which subdirectory the command is invoked in. | 
|  | 133 |  | 
|  | 134 |  | 
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 135 | Author | 
|  | 136 | ------ | 
|  | 137 | Written by Linus Torvalds <torvalds@osdl.org> and | 
|  | 138 | Junio C Hamano <junkio@cox.net> | 
|  | 139 |  | 
|  | 140 |  | 
|  | 141 | GIT | 
|  | 142 | --- | 
|  | 143 | Part of the gitlink:git[7] suite |