]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-commit.txt
Merge part of 'jc/diff'
[thirdparty/git.git] / Documentation / git-commit.txt
CommitLineData
215a7ad1
JH
1git-commit(1)
2=============
62033318
JH
3
4NAME
5----
215a7ad1 6git-commit - Record your changes
62033318
JH
7
8SYNOPSIS
9--------
353ce815 10[verse]
4170a195
JH
11'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>]
12 [-e] [--author <author>] [--] [[-i | -o ]<file>...]
62033318
JH
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
6d35cc76
JH
21This command can run `commit-msg`, `pre-commit`, and
22`post-commit` hooks. See link:hooks.html[hooks] for more
23information.
24
62033318
JH
25OPTIONS
26-------
eaa54efc 27-a|--all::
cb95bf48
JH
28 Update all paths in the index file. This flag notices
29 files that have been modified and deleted, but new files
8278ac2f 30 you have not told git about are not affected.
62033318
JH
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
130fcca6
JH
43--author <author>::
44 Override the author name used in the commit. Use
45 `A U Thor <author@example.com>` format.
46
62033318
JH
47-m <msg>::
48 Use the given <msg> as the commit message.
49
eaa54efc 50-s|--signoff::
3f971fc4
JH
51 Add Signed-off-by line at the end of the commit message.
52
eaa54efc 53-v|--verify::
3f971fc4
JH
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
eaa54efc 59 character. This is the default.
3f971fc4 60
eaa54efc
NW
61-n|--no-verify::
62 The opposite of `--verify`.
63
64-e|--edit::
6d35cc76
JH
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
130fcca6
JH
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
4170a195 76-o|--only::
130fcca6
JH
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.
62033318 81
4170a195
JH
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
3ae854c3
JH
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
130fcca6
JH
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
62033318
JH
135Author
136------
3f971fc4
JH
137Written by Linus Torvalds <torvalds@osdl.org> and
138Junio C Hamano <junkio@cox.net>
139
62033318
JH
140
141GIT
142---
a7154e91 143Part of the gitlink:git[7] suite