|
|
|
git-commit(1)
|
|
|
|
=============
|
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
|
|
|
git-commit - Record your changes
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
[verse]
|
|
|
|
'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>]
|
|
|
|
[--no-verify] [--amend] [-e] [--author <author>]
|
|
|
|
[--] [[-i | -o ]<file>...]
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
Updates the index file for given paths, or all modified files if
|
|
|
|
'-a' is specified, and makes a commit object. The command
|
|
|
|
VISUAL and EDITOR environment variables to edit the commit log
|
|
|
|
message.
|
|
|
|
|
|
|
|
Several environment variable are used during commits. They are
|
|
|
|
documented in gitlink:git-commit-tree[1].
|
|
|
|
|
|
|
|
|
|
|
|
This command can run `commit-msg`, `pre-commit`, and
|
|
|
|
`post-commit` hooks. See link:hooks.html[hooks] for more
|
|
|
|
information.
|
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
-------
|
|
|
|
-a|--all::
|
|
|
|
Update all paths in the index file. This flag notices
|
|
|
|
files that have been modified and deleted, but new files
|
|
|
|
you have not told git about are not affected.
|
|
|
|
|
|
|
|
-c or -C <commit>::
|
|
|
|
Take existing commit object, and reuse the log message
|
|
|
|
and the authorship information (including the timestamp)
|
|
|
|
when creating the commit. With '-C', the editor is not
|
|
|
|
invoked; with '-c' the user can further edit the commit
|
|
|
|
message.
|
|
|
|
|
|
|
|
-F <file>::
|
|
|
|
Take the commit message from the given file. Use '-' to
|
|
|
|
read the message from the standard input.
|
|
|
|
|
|
|
|
--author <author>::
|
|
|
|
Override the author name used in the commit. Use
|
|
|
|
`A U Thor <author@example.com>` format.
|
|
|
|
|
|
|
|
-m <msg>::
|
|
|
|
Use the given <msg> as the commit message.
|
|
|
|
|
|
|
|
-s|--signoff::
|
|
|
|
Add Signed-off-by line at the end of the commit message.
|
|
|
|
|
|
|
|
-v|--verify::
|
|
|
|
Look for suspicious lines the commit introduces, and
|
|
|
|
abort committing if there is one. The definition of
|
|
|
|
'suspicious lines' is currently the lines that has
|
|
|
|
trailing whitespaces, and the lines whose indentation
|
|
|
|
has a SP character immediately followed by a TAB
|
|
|
|
character. This is the default.
|
|
|
|
|
|
|
|
-n|--no-verify::
|
|
|
|
The opposite of `--verify`.
|
|
|
|
|
|
|
|
-e|--edit::
|
|
|
|
The message taken from file with `-F`, command line with
|
|
|
|
`-m`, and from file with `-C` are usually used as the
|
|
|
|
commit log message unmodified. This option lets you
|
|
|
|
further edit the message taken from these sources.
|
|
|
|
|
|
|
|
--amend::
|
|
|
|
|
|
|
|
Used to amend the tip of the current branch. Prepare the tree
|
|
|
|
object you would want to replace the latest commit as usual
|
|
|
|
(this includes the usual -i/-o and explicit paths), and the
|
|
|
|
commit log editor is seeded with the commit message from the
|
|
|
|
tip of the current branch. The commit you create replaces the
|
|
|
|
current tip -- if it was a merge, it will have the parents of
|
|
|
|
the current tip as parents -- so the current top commit is
|
|
|
|
discarded.
|
|
|
|
+
|
|
|
|
--
|
|
|
|
It is a rough equivalent for:
|
|
|
|
------
|
|
|
|
$ git reset --soft HEAD^
|
|
|
|
$ ... do something else to come up with the right tree ...
|
|
|
|
$ git commit -c ORIG_HEAD
|
|
|
|
|
|
|
|
------
|
|
|
|
but can be used to amend a merge commit.
|
|
|
|
--
|
|
|
|
|
|
|
|
-i|--include::
|
|
|
|
Instead of committing only the files specified on the
|
|
|
|
command line, update them in the index file and then
|
|
|
|
commit the whole index. This is the traditional
|
|
|
|
behaviour.
|
|
|
|
|
|
|
|
-o|--only::
|
|
|
|
Commit only the files specified on the command line.
|
|
|
|
This format cannot be used during a merge, nor when the
|
|
|
|
index and the latest commit does not match on the
|
|
|
|
specified paths to avoid confusion.
|
|
|
|
|
|
|
|
\--::
|
|
|
|
Do not interpret any more arguments as options.
|
|
|
|
|
|
|
|
<file>...::
|
|
|
|
Files to be committed. The meaning of these is
|
|
|
|
different between `--include` and `--only`. Without
|
|
|
|
either, it defaults `--only` semantics.
|
|
|
|
|
|
|
|
If you make a commit and then found a mistake immediately after
|
|
|
|
that, you can recover from it with gitlink:git-reset[1].
|
|
|
|
|
|
|
|
|
|
|
|
Discussion
|
|
|
|
----------
|
|
|
|
|
|
|
|
`git commit` without _any_ parameter commits the tree structure
|
|
|
|
recorded by the current index file. This is a whole-tree commit
|
|
|
|
even the command is invoked from a subdirectory.
|
|
|
|
|
|
|
|
`git commit --include paths...` is equivalent to
|
|
|
|
|
|
|
|
git update-index --remove paths...
|
|
|
|
git commit
|
|
|
|
|
|
|
|
That is, update the specified paths to the index and then commit
|
|
|
|
the whole tree.
|
|
|
|
|
|
|
|
`git commit paths...` largely bypasses the index file and
|
|
|
|
commits only the changes made to the specified paths. It has
|
|
|
|
however several safety valves to prevent confusion.
|
|
|
|
|
|
|
|
. It refuses to run during a merge (i.e. when
|
|
|
|
`$GIT_DIR/MERGE_HEAD` exists), and reminds trained git users
|
|
|
|
that the traditional semantics now needs -i flag.
|
|
|
|
|
|
|
|
. It refuses to run if named `paths...` are different in HEAD
|
|
|
|
and the index (ditto about reminding). Added paths are OK.
|
|
|
|
This is because an earlier `git diff` (not `git diff HEAD`)
|
|
|
|
would have shown the differences since the last `git
|
|
|
|
update-index paths...` to the user, and an inexperienced user
|
|
|
|
may mistakenly think that the changes between the index and
|
|
|
|
the HEAD (i.e. earlier changes made before the last `git
|
|
|
|
update-index paths...` was done) are not being committed.
|
|
|
|
|
|
|
|
. It reads HEAD commit into a temporary index file, updates the
|
|
|
|
specified `paths...` and makes a commit. At the same time,
|
|
|
|
the real index file is also updated with the same `paths...`.
|
|
|
|
|
|
|
|
`git commit --all` updates the index file with _all_ changes to
|
|
|
|
the working tree, and makes a whole-tree commit, regardless of
|
|
|
|
which subdirectory the command is invoked in.
|
|
|
|
|
|
|
|
|
|
|
|
Author
|
|
|
|
------
|
|
|
|
Written by Linus Torvalds <torvalds@osdl.org> and
|
|
|
|
Junio C Hamano <junkio@cox.net>
|
|
|
|
|
|
|
|
|
|
|
|
GIT
|
|
|
|
---
|
|
|
|
Part of the gitlink:git[7] suite
|