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