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