Documentation / git-commit.txton commit make the name of the library directory a config option (10861be)
   1git-commit(1)
   2=============
   3
   4NAME
   5----
   6git-commit - Record changes to the repository
   7
   8SYNOPSIS
   9--------
  10[verse]
  11'git-commit' [-a | --interactive] [-s] [-v] [-u]
  12           [(-c | -C) <commit> | -F <file> | -m <msg> | --amend]
  13           [--no-verify] [-e] [--author <author>]
  14           [--] [[-i | -o ]<file>...]
  15
  16DESCRIPTION
  17-----------
  18Use 'git commit' when you want to record your changes into the repository
  19along with a log message describing what the commit is about. All changes
  20to be committed must be explicitly identified using one of the following
  21methods:
  22
  231. by using gitlink:git-add[1] to incrementally "add" changes to the
  24   next commit before using the 'commit' command (Note: even modified
  25   files must be "added");
  26
  272. by using gitlink:git-rm[1] to identify content removal for the next
  28   commit, again before using the 'commit' command;
  29
  303. by directly listing files containing changes to be committed as arguments
  31   to the 'commit' command, in which cases only those files alone will be
  32   considered for the commit;
  33
  344. by using the -a switch with the 'commit' command to automatically "add"
  35   changes from all known files i.e. files that have already been committed
  36   before, and to automatically "rm" files that have been
  37   removed from the working tree, and perform the actual commit.
  38
  395. by using the --interactive switch with the 'commit' command to decide one
  40   by one which files should be part of the commit, before finalizing the
  41   operation.  Currently, this is done by invoking `git-add --interactive`.
  42
  43The gitlink:git-status[1] command can be used to obtain a
  44summary of what is included by any of the above for the next
  45commit by giving the same set of parameters you would give to
  46this command.
  47
  48If you make a commit and then found a mistake immediately after
  49that, you can recover from it with gitlink:git-reset[1].
  50
  51
  52OPTIONS
  53-------
  54-a|--all::
  55        Tell the command to automatically stage files that have
  56        been modified and deleted, but new files you have not
  57        told git about are not affected.
  58
  59-c or -C <commit>::
  60        Take existing commit object, and reuse the log message
  61        and the authorship information (including the timestamp)
  62        when creating the commit.  With '-C', the editor is not
  63        invoked; with '-c' the user can further edit the commit
  64        message.
  65
  66-F <file>::
  67        Take the commit message from the given file.  Use '-' to
  68        read the message from the standard input.
  69
  70--author <author>::
  71        Override the author name used in the commit.  Use
  72        `A U Thor <author@example.com>` format.
  73
  74-m <msg>|--message=<msg>::
  75        Use the given <msg> as the commit message.
  76
  77-t <file>|--template=<file>::
  78        Use the contents of the given file as the initial version
  79        of the commit message. The editor is invoked and you can
  80        make subsequent changes. If a message is specified using
  81        the `-m` or `-F` options, this option has no effect. This
  82        overrides the `commit.template` configuration variable.
  83
  84-s|--signoff::
  85        Add Signed-off-by line at the end of the commit message.
  86
  87--no-verify::
  88        This option bypasses the pre-commit hook.
  89        See also link:hooks.html[hooks].
  90
  91-e|--edit::
  92        The message taken from file with `-F`, command line with
  93        `-m`, and from file with `-C` are usually used as the
  94        commit log message unmodified.  This option lets you
  95        further edit the message taken from these sources.
  96
  97--amend::
  98
  99        Used to amend the tip of the current branch. Prepare the tree
 100        object you would want to replace the latest commit as usual
 101        (this includes the usual -i/-o and explicit paths), and the
 102        commit log editor is seeded with the commit message from the
 103        tip of the current branch. The commit you create replaces the
 104        current tip -- if it was a merge, it will have the parents of
 105        the current tip as parents -- so the current top commit is
 106        discarded.
 107+
 108--
 109It is a rough equivalent for:
 110------
 111        $ git reset --soft HEAD^
 112        $ ... do something else to come up with the right tree ...
 113        $ git commit -c ORIG_HEAD
 114
 115------
 116but can be used to amend a merge commit.
 117--
 118
 119-i|--include::
 120        Before making a commit out of staged contents so far,
 121        stage the contents of paths given on the command line
 122        as well.  This is usually not what you want unless you
 123        are concluding a conflicted merge.
 124
 125-u|--untracked-files::
 126        Show all untracked files, also those in uninteresting
 127        directories, in the "Untracked files:" section of commit
 128        message template.  Without this option only its name and
 129        a trailing slash are displayed for each untracked
 130        directory.
 131
 132-v|--verbose::
 133        Show unified diff between the HEAD commit and what
 134        would be committed at the bottom of the commit message
 135        template.  Note that this diff output doesn't have its
 136        lines prefixed with '#'.
 137
 138-q|--quiet::
 139        Suppress commit summary message.
 140
 141\--::
 142        Do not interpret any more arguments as options.
 143
 144<file>...::
 145        When files are given on the command line, the command
 146        commits the contents of the named files, without
 147        recording the changes already staged.  The contents of
 148        these files are also staged for the next commit on top
 149        of what have been staged before.
 150
 151
 152EXAMPLES
 153--------
 154When recording your own work, the contents of modified files in
 155your working tree are temporarily stored to a staging area
 156called the "index" with gitlink:git-add[1].  Removal
 157of a file is staged with gitlink:git-rm[1].  After building the
 158state to be committed incrementally with these commands, `git
 159commit` (without any pathname parameter) is used to record what
 160has been staged so far.  This is the most basic form of the
 161command.  An example:
 162
 163------------
 164$ edit hello.c
 165$ git rm goodbye.c
 166$ git add hello.c
 167$ git commit
 168------------
 169
 170Instead of staging files after each individual change, you can
 171tell `git commit` to notice the changes to the files whose
 172contents are tracked in
 173your working tree and do corresponding `git add` and `git rm`
 174for you.  That is, this example does the same as the earlier
 175example if there is no other change in your working tree:
 176
 177------------
 178$ edit hello.c
 179$ rm goodbye.c
 180$ git commit -a
 181------------
 182
 183The command `git commit -a` first looks at your working tree,
 184notices that you have modified hello.c and removed goodbye.c,
 185and performs necessary `git add` and `git rm` for you.
 186
 187After staging changes to many files, you can alter the order the
 188changes are recorded in, by giving pathnames to `git commit`.
 189When pathnames are given, the command makes a commit that
 190only records the changes made to the named paths:
 191
 192------------
 193$ edit hello.c hello.h
 194$ git add hello.c hello.h
 195$ edit Makefile
 196$ git commit Makefile
 197------------
 198
 199This makes a commit that records the modification to `Makefile`.
 200The changes staged for `hello.c` and `hello.h` are not included
 201in the resulting commit.  However, their changes are not lost --
 202they are still staged and merely held back.  After the above
 203sequence, if you do:
 204
 205------------
 206$ git commit
 207------------
 208
 209this second commit would record the changes to `hello.c` and
 210`hello.h` as expected.
 211
 212After a merge (initiated by either gitlink:git-merge[1] or
 213gitlink:git-pull[1]) stops because of conflicts, cleanly merged
 214paths are already staged to be committed for you, and paths that
 215conflicted are left in unmerged state.  You would have to first
 216check which paths are conflicting with gitlink:git-status[1]
 217and after fixing them manually in your working tree, you would
 218stage the result as usual with gitlink:git-add[1]:
 219
 220------------
 221$ git status | grep unmerged
 222unmerged: hello.c
 223$ edit hello.c
 224$ git add hello.c
 225------------
 226
 227After resolving conflicts and staging the result, `git ls-files -u`
 228would stop mentioning the conflicted path.  When you are done,
 229run `git commit` to finally record the merge:
 230
 231------------
 232$ git commit
 233------------
 234
 235As with the case to record your own changes, you can use `-a`
 236option to save typing.  One difference is that during a merge
 237resolution, you cannot use `git commit` with pathnames to
 238alter the order the changes are committed, because the merge
 239should be recorded as a single commit.  In fact, the command
 240refuses to run when given pathnames (but see `-i` option).
 241
 242
 243DISCUSSION
 244----------
 245
 246Though not required, it's a good idea to begin the commit message
 247with a single short (less than 50 character) line summarizing the
 248change, followed by a blank line and then a more thorough description.
 249Tools that turn commits into email, for example, use the first line
 250on the Subject: line and the rest of the commit in the body.
 251
 252include::i18n.txt[]
 253
 254ENVIRONMENT AND CONFIGURATION VARIABLES
 255---------------------------------------
 256The editor used to edit the commit log message will be chosen from the
 257GIT_EDITOR environment variable, the core.editor configuration variable, the
 258VISUAL environment variable, or the EDITOR environment variable (in that
 259order).
 260
 261HOOKS
 262-----
 263This command can run `commit-msg`, `pre-commit`, and
 264`post-commit` hooks.  See link:hooks.html[hooks] for more
 265information.
 266
 267
 268SEE ALSO
 269--------
 270gitlink:git-add[1],
 271gitlink:git-rm[1],
 272gitlink:git-mv[1],
 273gitlink:git-merge[1],
 274gitlink:git-commit-tree[1]
 275
 276Author
 277------
 278Written by Linus Torvalds <torvalds@osdl.org> and
 279Junio C Hamano <junkio@cox.net>
 280
 281
 282GIT
 283---
 284Part of the gitlink:git[7] suite