Documentation / git-status.txton commit send-email: Refuse to send cover-letter template subject (a03bc5b)
   1git-status(1)
   2=============
   3
   4NAME
   5----
   6git-status - Show the working tree status
   7
   8
   9SYNOPSIS
  10--------
  11'git status' [<options>...] [--] [<pathspec>...]
  12
  13DESCRIPTION
  14-----------
  15Displays paths that have differences between the index file and the
  16current HEAD commit, paths that have differences between the working
  17tree and the index file, and paths in the working tree that are not
  18tracked by git (and are not ignored by linkgit:gitignore[5]). The first
  19are what you _would_ commit by running `git commit`; the second and
  20third are what you _could_ commit by running 'git add' before running
  21`git commit`.
  22
  23OPTIONS
  24-------
  25
  26-s::
  27--short::
  28        Give the output in the short-format.
  29
  30-b::
  31--branch::
  32        Show the branch and tracking info even in short-format.
  33
  34--porcelain::
  35        Give the output in a stable, easy-to-parse format for scripts.
  36        Currently this is identical to --short output, but is guaranteed
  37        not to change in the future, making it safe for scripts.
  38
  39-u[<mode>]::
  40--untracked-files[=<mode>]::
  41        Show untracked files (Default: 'all').
  42+
  43The mode parameter is optional, and is used to specify
  44the handling of untracked files. The possible options are:
  45+
  46--
  47        - 'no'     - Show no untracked files
  48        - 'normal' - Shows untracked files and directories
  49        - 'all'    - Also shows individual files in untracked directories.
  50--
  51+
  52See linkgit:git-config[1] for configuration variable
  53used to change the default for when the option is not
  54specified.
  55
  56--ignore-submodules[=<when>]::
  57        Ignore changes to submodules when looking for changes. <when> can be
  58        either "untracked", "dirty" or "all", which is the default. When
  59        "untracked" is used submodules are not considered dirty when they only
  60        contain untracked content (but they are still scanned for modified
  61        content). Using "dirty" ignores all changes to the work tree of submodules,
  62        only changes to the commits stored in the superproject are shown (this was
  63        the behavior before 1.7.0). Using "all" hides all changes to submodules
  64        (and suppresses the output of submodule summaries when the config option
  65        `status.submodulesummary` is set).
  66
  67-z::
  68        Terminate entries with NUL, instead of LF.  This implies
  69        the `--porcelain` output format if no other format is given.
  70
  71
  72OUTPUT
  73------
  74The output from this command is designed to be used as a commit
  75template comment, and all the output lines are prefixed with '#'.
  76The default, long format, is designed to be human readable,
  77verbose and descriptive.  They are subject to change in any time.
  78
  79The paths mentioned in the output, unlike many other git commands, are
  80made relative to the current directory if you are working in a
  81subdirectory (this is on purpose, to help cutting and pasting). See
  82the status.relativePaths config option below.
  83
  84In short-format, the status of each path is shown as
  85
  86        XY PATH1 -> PATH2
  87
  88where `PATH1` is the path in the `HEAD`, and ` -> PATH2` part is
  89shown only when `PATH1` corresponds to a different path in the
  90index/worktree (i.e. the file is renamed). The 'XY' is a two-letter
  91status code.
  92
  93The fields (including the `->`) are separated from each other by a
  94single space. If a filename contains whitespace or other nonprintable
  95characters, that field will be quoted in the manner of a C string
  96literal: surrounded by ASCII double quote (34) characters, and with
  97interior special characters backslash-escaped.
  98
  99For paths with merge conflicts, `X` and 'Y' show the modification
 100states of each side of the merge. For paths that do not have merge
 101conflicts, `X` shows the status of the index, and `Y` shows the status
 102of the work tree.  For untracked paths, `XY` are `??`.  Other status
 103codes can be interpreted as follows:
 104
 105* ' ' = unmodified
 106* 'M' = modified
 107* 'A' = added
 108* 'D' = deleted
 109* 'R' = renamed
 110* 'C' = copied
 111* 'U' = updated but unmerged
 112
 113Ignored files are not listed.
 114
 115    X          Y     Meaning
 116    -------------------------------------------------
 117              [MD]   not updated
 118    M        [ MD]   updated in index
 119    A        [ MD]   added to index
 120    D         [ M]   deleted from index
 121    R        [ MD]   renamed in index
 122    C        [ MD]   copied in index
 123    [MARC]           index and work tree matches
 124    [ MARC]     M    work tree changed since index
 125    [ MARC]     D    deleted in work tree
 126    -------------------------------------------------
 127    D           D    unmerged, both deleted
 128    A           U    unmerged, added by us
 129    U           D    unmerged, deleted by them
 130    U           A    unmerged, added by them
 131    D           U    unmerged, deleted by us
 132    A           A    unmerged, both added
 133    U           U    unmerged, both modified
 134    -------------------------------------------------
 135    ?           ?    untracked
 136    -------------------------------------------------
 137
 138If -b is used the short-format status is preceded by a line
 139
 140## branchname tracking info
 141
 142There is an alternate -z format recommended for machine parsing.  In
 143that format, the status field is the same, but some other things
 144change.  First, the '->' is omitted from rename entries and the field
 145order is reversed (e.g 'from -> to' becomes 'to from'). Second, a NUL
 146(ASCII 0) follows each filename, replacing space as a field separator
 147and the terminating newline (but a space still separates the status
 148field from the first filename).  Third, filenames containing special
 149characters are not specially formatted; no quoting or
 150backslash-escaping is performed. Fourth, there is no branch line.
 151
 152CONFIGURATION
 153-------------
 154
 155The command honors `color.status` (or `status.color` -- they
 156mean the same thing and the latter is kept for backward
 157compatibility) and `color.status.<slot>` configuration variables
 158to colorize its output.
 159
 160If the config variable `status.relativePaths` is set to false, then all
 161paths shown are relative to the repository root, not to the current
 162directory.
 163
 164If `status.submodulesummary` is set to a non zero number or true (identical
 165to -1 or an unlimited number), the submodule summary will be enabled for
 166the long format and a summary of commits for modified submodules will be
 167shown (see --summary-limit option of linkgit:git-submodule[1]).
 168
 169SEE ALSO
 170--------
 171linkgit:gitignore[5]
 172
 173Author
 174------
 175Written by Junio C Hamano <gitster@pobox.com>.
 176
 177Documentation
 178--------------
 179Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
 180
 181GIT
 182---
 183Part of the linkgit:git[1] suite