blob: def635f57879c467d85f43d44aafac90c7f72a9a [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-status(1)
2=============
3
4NAME
5----
Junio C Hamano7c73c662007-01-19 00:37:506git-status - Show the working tree status
Junio C Hamano1a4e8412005-12-27 08:17:237
8
9SYNOPSIS
10--------
Junio C Hamano15567bc2011-07-23 00:51:5911[verse]
Junio C Hamanoa0fae262009-12-28 09:33:5012'git status' [<options>...] [--] [<pathspec>...]
Junio C Hamano1a4e8412005-12-27 08:17:2313
14DESCRIPTION
15-----------
Junio C Hamano942b35e2007-12-09 10:19:3316Displays 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
Junio C Hamano076ffcc2013-02-06 05:13:2119tracked by Git (and are not ignored by linkgit:gitignore[5]). The first
Junio C Hamano942b35e2007-12-09 10:19:3320are what you _would_ commit by running `git commit`; the second and
Junio C Hamano1aa40d22010-01-21 17:46:4321third are what you _could_ commit by running 'git add' before running
Junio C Hamano942b35e2007-12-09 10:19:3322`git commit`.
Junio C Hamano1a4e8412005-12-27 08:17:2323
Junio C Hamanoa0fae262009-12-28 09:33:5024OPTIONS
25-------
Junio C Hamano8fd52302006-08-10 00:18:0826
Junio C Hamanoa0fae262009-12-28 09:33:5027-s::
28--short::
29Give the output in the short-format.
30
Junio C Hamanof5de4cf2010-06-19 00:33:1731-b::
32--branch::
33Show the branch and tracking info even in short-format.
34
Junio C Hamanoa0fae262009-12-28 09:33:5035--porcelain::
Junio C Hamanoef5a2f92011-05-31 19:53:3336Give the output in an easy-to-parse format for scripts.
37This is similar to the short output, but will remain stable
Junio C Hamano076ffcc2013-02-06 05:13:2138across Git versions and regardless of user configuration. See
Junio C Hamanoef5a2f92011-05-31 19:53:3339below for details.
Junio C Hamanoa0fae262009-12-28 09:33:5040
Junio C Hamanoa1295452012-11-13 22:32:0441--long::
42Give the output in the long-format. This is the default.
43
Junio C Hamanoa0fae262009-12-28 09:33:5044-u[<mode>]::
45--untracked-files[=<mode>]::
Junio C Hamano36a4dbc2011-02-22 07:51:3246Show untracked files.
Junio C Hamanoa0fae262009-12-28 09:33:5047+
Junio C Hamano36a4dbc2011-02-22 07:51:3248The mode parameter is optional (defaults to 'all'), and is used to
Junio C Hamano5e7f1312013-03-21 22:49:0149specify the handling of untracked files.
Junio C Hamanoa0fae262009-12-28 09:33:5050+
Junio C Hamano36a4dbc2011-02-22 07:51:3251The possible options are:
52+
Junio C Hamano5e7f1312013-03-21 22:49:0153- 'no' - Show no untracked files.
54- 'normal' - Shows untracked files and directories.
Junio C Hamanoa0fae262009-12-28 09:33:5055- 'all' - Also shows individual files in untracked directories.
Junio C Hamanoa0fae262009-12-28 09:33:5056+
Junio C Hamano5e7f1312013-03-21 22:49:0157When `-u` option is not used, untracked files and directories are
58shown (i.e. the same as specifying `normal`), to help you avoid
59forgetting to add newly created files. Because it takes extra work
60to find untracked files in the filesystem, this mode may take some
61time in a large working tree. You can use `no` to have `git status`
62return more quickly without showing untracked files.
63+
Junio C Hamano36a4dbc2011-02-22 07:51:3264The default can be changed using the status.showUntrackedFiles
65configuration variable documented in linkgit:git-config[1].
Junio C Hamanoa0fae262009-12-28 09:33:5066
Junio C Hamano7d449522010-07-01 00:08:5167--ignore-submodules[=<when>]::
68Ignore changes to submodules when looking for changes. <when> can be
Junio C Hamano619596a2010-08-18 22:15:3569either "none", "untracked", "dirty" or "all", which is the default.
70Using "none" will consider the submodule modified when it either contains
71untracked or modified files or its HEAD differs from the commit recorded
72in the superproject and can be used to override any settings of the
73'ignore' option in linkgit:git-config[1] or linkgit:gitmodules[5]. When
Junio C Hamano7d449522010-07-01 00:08:5174"untracked" is used submodules are not considered dirty when they only
75contain untracked content (but they are still scanned for modified
76content). Using "dirty" ignores all changes to the work tree of submodules,
77only changes to the commits stored in the superproject are shown (this was
78the behavior before 1.7.0). Using "all" hides all changes to submodules
79(and suppresses the output of submodule summaries when the config option
80`status.submodulesummary` is set).
81
Junio C Hamano4c4b0122011-06-30 01:19:3282--ignored::
83Show ignored files as well.
84
Junio C Hamanoa0fae262009-12-28 09:33:5085-z::
86Terminate entries with NUL, instead of LF. This implies
87the `--porcelain` output format if no other format is given.
Junio C Hamano942b35e2007-12-09 10:19:3388
Junio C Hamano22700fb2012-05-03 23:07:2589--column[=<options>]::
90--no-column::
91Display untracked files in columns. See configuration variable
92column.status for option syntax.`--column` and `--no-column`
93without options are equivalent to 'always' and 'never'
94respectively.
95
Junio C Hamano1a4e8412005-12-27 08:17:2396
97OUTPUT
98------
99The output from this command is designed to be used as a commit
Junio C Hamano52b6ba32014-04-01 00:26:48100template comment.
Junio C Hamanoa0fae262009-12-28 09:33:50101The default, long format, is designed to be human readable,
Junio C Hamanoef5a2f92011-05-31 19:53:33102verbose and descriptive. Its contents and format are subject to change
103at any time.
Junio C Hamano1a4e8412005-12-27 08:17:23104
Junio C Hamano076ffcc2013-02-06 05:13:21105The paths mentioned in the output, unlike many other Git commands, are
Junio C Hamano942b35e2007-12-09 10:19:33106made relative to the current directory if you are working in a
107subdirectory (this is on purpose, to help cutting and pasting). See
108the status.relativePaths config option below.
Junio C Hamano00b8b632007-12-07 09:50:49109
Junio C Hamanoef5a2f92011-05-31 19:53:33110Short Format
111~~~~~~~~~~~~
112
113In the short-format, the status of each path is shown as
Junio C Hamanoa0fae262009-12-28 09:33:50114
115XY PATH1 -> PATH2
116
Junio C Hamanob76a6862012-05-02 22:02:46117where `PATH1` is the path in the `HEAD`, and the " `-> PATH2`" part is
Junio C Hamanoa0fae262009-12-28 09:33:50118shown only when `PATH1` corresponds to a different path in the
Junio C Hamanofc5d7352010-04-24 02:59:11119index/worktree (i.e. the file is renamed). The 'XY' is a two-letter
120status code.
Junio C Hamanoa0fae262009-12-28 09:33:50121
Junio C Hamanob76a6862012-05-02 22:02:46122The fields (including the `->`) are separated from each other by a
Junio C Hamanofc5d7352010-04-24 02:59:11123single space. If a filename contains whitespace or other nonprintable
124characters, that field will be quoted in the manner of a C string
125literal: surrounded by ASCII double quote (34) characters, and with
126interior special characters backslash-escaped.
Junio C Hamanoa0fae262009-12-28 09:33:50127
Junio C Hamanofc5d7352010-04-24 02:59:11128For paths with merge conflicts, `X` and 'Y' show the modification
129states of each side of the merge. For paths that do not have merge
130conflicts, `X` shows the status of the index, and `Y` shows the status
131of the work tree. For untracked paths, `XY` are `??`. Other status
132codes can be interpreted as follows:
133
134* ' ' = unmodified
135* 'M' = modified
136* 'A' = added
137* 'D' = deleted
138* 'R' = renamed
139* 'C' = copied
140* 'U' = updated but unmerged
141
Junio C Hamano4c4b0122011-06-30 01:19:32142Ignored files are not listed, unless `--ignored` option is in effect,
143in which case `XY` are `!!`.
Junio C Hamanoa0fae262009-12-28 09:33:50144
145 X Y Meaning
146 -------------------------------------------------
147 [MD] not updated
148 M [ MD] updated in index
149 A [ MD] added to index
Junio C Hamanofc5d7352010-04-24 02:59:11150 D [ M] deleted from index
Junio C Hamanoa0fae262009-12-28 09:33:50151 R [ MD] renamed in index
152 C [ MD] copied in index
153 [MARC] index and work tree matches
154 [ MARC] M work tree changed since index
155 [ MARC] D deleted in work tree
156 -------------------------------------------------
157 D D unmerged, both deleted
158 A U unmerged, added by us
159 U D unmerged, deleted by them
160 U A unmerged, added by them
161 D U unmerged, deleted by us
162 A A unmerged, both added
163 U U unmerged, both modified
164 -------------------------------------------------
165 ? ? untracked
Junio C Hamano4c4b0122011-06-30 01:19:32166 ! ! ignored
Junio C Hamanoa0fae262009-12-28 09:33:50167 -------------------------------------------------
168
Junio C Hamanof5de4cf2010-06-19 00:33:17169If -b is used the short-format status is preceded by a line
170
171## branchname tracking info
172
Junio C Hamanoef5a2f92011-05-31 19:53:33173Porcelain Format
174~~~~~~~~~~~~~~~~
175
176The porcelain format is similar to the short format, but is guaranteed
Junio C Hamano076ffcc2013-02-06 05:13:21177not to change in a backwards-incompatible way between Git versions or
Junio C Hamanoef5a2f92011-05-31 19:53:33178based on user configuration. This makes it ideal for parsing by scripts.
179The description of the short format above also describes the porcelain
180format, with a few exceptions:
181
1821. The user's color.status configuration is not respected; color will
183 always be off.
184
1852. The user's status.relativePaths configuration is not respected; paths
186 shown will always be relative to the repository root.
187
188There is also an alternate -z format recommended for machine parsing. In
Junio C Hamanofc5d7352010-04-24 02:59:11189that format, the status field is the same, but some other things
Junio C Hamanoef5a2f92011-05-31 19:53:33190change. First, the '\->' is omitted from rename entries and the field
191order is reversed (e.g 'from \-> to' becomes 'to from'). Second, a NUL
Junio C Hamanofc5d7352010-04-24 02:59:11192(ASCII 0) follows each filename, replacing space as a field separator
193and the terminating newline (but a space still separates the status
194field from the first filename). Third, filenames containing special
195characters are not specially formatted; no quoting or
Junio C Hamanobcdb12e2012-05-10 18:45:15196backslash-escaping is performed.
Junio C Hamano1a4e8412005-12-27 08:17:23197
Junio C Hamanof9771f62007-01-17 17:42:30198CONFIGURATION
199-------------
200
201The command honors `color.status` (or `status.color` -- they
202mean the same thing and the latter is kept for backward
203compatibility) and `color.status.<slot>` configuration variables
204to colorize its output.
205
Junio C Hamano942b35e2007-12-09 10:19:33206If the config variable `status.relativePaths` is set to false, then all
207paths shown are relative to the repository root, not to the current
208directory.
209
Junio C Hamanoe3ddb5b2008-04-21 00:48:07210If `status.submodulesummary` is set to a non zero number or true (identical
Junio C Hamanoa0fae262009-12-28 09:33:50211to -1 or an unlimited number), the submodule summary will be enabled for
212the long format and a summary of commits for modified submodules will be
Junio C Hamano369e3402013-10-15 18:40:25213shown (see --summary-limit option of linkgit:git-submodule[1]). Please note
214that the summary output from the status command will be suppressed for all
215submodules when `diff.ignoreSubmodules` is set to 'all' or only for those
216submodules where `submodule.<name>.ignore=all`. To also view the summary for
217ignored submodules you can either use the --ignore-submodules=dirty command
218line option or the 'git submodule summary' command, which shows a similar
219output but does not honor these settings.
Junio C Hamanoe3ddb5b2008-04-21 00:48:07220
Junio C Hamano9049d912008-05-29 02:09:50221SEE ALSO
Junio C Hamano679d22d2007-06-02 21:13:44222--------
Junio C Hamano35738e82008-01-07 07:55:46223linkgit:gitignore[5]
Junio C Hamanof9771f62007-01-17 17:42:30224
Junio C Hamano1a4e8412005-12-27 08:17:23225GIT
226---
Junio C Hamanof7c042d2008-06-06 22:50:53227Part of the linkgit:git[1] suite