6 git-status - Show the working tree status
12 'git status' [<options>...] [--] [<pathspec>...]
16 Displays paths that have differences between the index file and the
17 current HEAD commit, paths that have differences between the working
18 tree and the index file, and paths in the working tree that are not
19 tracked by git (and are not ignored by linkgit:gitignore[5]). The first
20 are what you _would_ commit by running `git commit`; the second and
21 third are what you _could_ commit by running 'git add' before running
29 Give the output in the short-format.
33 Show the branch and tracking info even in short-format.
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
42 Give the output in the long-format. This is the default.
45 --untracked-files[=<mode>]::
48 The mode parameter is optional (defaults to 'all'), and is used to
49 specify the handling of untracked files; when -u is not used, the
50 default is 'normal', i.e. show untracked files and directories.
52 The possible options are:
54 - 'no' - Show no untracked files
55 - 'normal' - Shows untracked files and directories
56 - 'all' - Also shows individual files in untracked directories.
58 The default can be changed using the status.showUntrackedFiles
59 configuration variable documented in linkgit:git-config[1].
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).
77 Show ignored files as well.
80 Terminate entries with NUL, instead of LF. This implies
81 the `--porcelain` output format if no other format is given.
83 --column[=<options>]::
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'
93 The output from this command is designed to be used as a commit
94 template comment, and all the output lines are prefixed with '#'.
95 The default, long format, is designed to be human readable,
96 verbose and descriptive. Its contents and format are subject to change
99 The paths mentioned in the output, unlike many other git commands, are
100 made relative to the current directory if you are working in a
101 subdirectory (this is on purpose, to help cutting and pasting). See
102 the status.relativePaths config option below.
107 In the short-format, the status of each path is shown as
111 where `PATH1` is the path in the `HEAD`, and the " `-> PATH2`" part is
112 shown only when `PATH1` corresponds to a different path in the
113 index/worktree (i.e. the file is renamed). The 'XY' is a two-letter
116 The fields (including the `->`) are separated from each other by a
117 single space. If a filename contains whitespace or other nonprintable
118 characters, that field will be quoted in the manner of a C string
119 literal: surrounded by ASCII double quote (34) characters, and with
120 interior special characters backslash-escaped.
122 For paths with merge conflicts, `X` and 'Y' show the modification
123 states of each side of the merge. For paths that do not have merge
124 conflicts, `X` shows the status of the index, and `Y` shows the status
125 of the work tree. For untracked paths, `XY` are `??`. Other status
126 codes can be interpreted as follows:
134 * 'U' = updated but unmerged
136 Ignored files are not listed, unless `--ignored` option is in effect,
137 in which case `XY` are `!!`.
140 -------------------------------------------------
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 -------------------------------------------------
161 -------------------------------------------------
163 If -b is used the short-format status is preceded by a line
165 ## branchname tracking info
170 The porcelain format is similar to the short format, but is guaranteed
171 not to change in a backwards-incompatible way between git versions or
172 based on user configuration. This makes it ideal for parsing by scripts.
173 The description of the short format above also describes the porcelain
174 format, with a few exceptions:
176 1. The user's color.status configuration is not respected; color will
179 2. The user's status.relativePaths configuration is not respected; paths
180 shown will always be relative to the repository root.
182 There is also an alternate -z format recommended for machine parsing. In
183 that format, the status field is the same, but some other things
184 change. First, the '\->' is omitted from rename entries and the field
185 order is reversed (e.g 'from \-> to' becomes 'to from'). Second, a NUL
186 (ASCII 0) follows each filename, replacing space as a field separator
187 and the terminating newline (but a space still separates the status
188 field from the first filename). Third, filenames containing special
189 characters are not specially formatted; no quoting or
190 backslash-escaping is performed.
195 The command honors `color.status` (or `status.color` -- they
196 mean the same thing and the latter is kept for backward
197 compatibility) and `color.status.<slot>` configuration variables
198 to colorize its output.
200 If the config variable `status.relativePaths` is set to false, then all
201 paths shown are relative to the repository root, not to the current
204 If `status.submodulesummary` is set to a non zero number or true (identical
205 to -1 or an unlimited number), the submodule summary will be enabled for
206 the long format and a summary of commits for modified submodules will be
207 shown (see --summary-limit option of linkgit:git-submodule[1]).
215 Part of the linkgit:git[1] suite