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