6 git-status - Show the working tree status
11 'git status' [<options>...] [--] [<pathspec>...]
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
28 Give the output in the short-format.
32 Show the branch and tracking info even in short-format.
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.
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
57 Terminate entries with NUL, instead of LF. This implies
58 the `--porcelain` output format if no other format is given.
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
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
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:
100 * 'U' = updated but unmerged
102 Ignored files are not listed.
105 -------------------------------------------------
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 -------------------------------------------------
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.
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
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]).
164 Written by Junio C Hamano <gitster@pobox.com>.
168 Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
172 Part of the linkgit:git[1] suite