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 [-e] [--author <author>] [--] [[-i | -o ]<file>...] 13 14DESCRIPTION 15----------- 16Updates the index file for given paths, or all modified files if 17'-a' is specified, and makes a commit object. The command 18VISUAL and EDITOR environment variables to edit the commit log 19message. 20 21This command can run `commit-msg`, `pre-commit`, and 22`post-commit` hooks. See link:hooks.html[hooks] for more 23information. 24 25OPTIONS 26------- 27-a|--all:: 28 Update all paths in the index file. This flag notices 29 files that have been modified and deleted, but new files 30 you have not told git about are not affected. 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 43--author <author>:: 44 Override the author name used in the commit. Use 45 `A U Thor <author@example.com>` format. 46 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 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 76-o|--only:: 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. 81 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 90If you make a commit and then found a mistake immediately after 91that, you can recover from it with gitlink:git-reset[1]. 92 93 94Discussion 95---------- 96 97`git commit` without _any_ parameter commits the tree structure 98recorded by the current index file. This is a whole-tree commit 99even 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 106That is, update the specified paths to the index and then commit 107the whole tree. 108 109`git commit paths...` largely bypasses the index file and 110commits only the changes made to the specified paths. It has 111however 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 131the working tree, and makes a whole-tree commit, regardless of 132which subdirectory the command is invoked in. 133 134 135Author 136------ 137Written by Linus Torvalds <torvalds@osdl.org> and 138Junio C Hamano <junkio@cox.net> 139 140 141GIT 142--- 143Part of the gitlink:git[7] suite