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