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