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--porcelain:: 31 Give the output in a stable, easy-to-parse format for scripts. 32 Currently this is identical to --short output, but is guaranteed 33 not to change in the future, making it safe for scripts. 34 35-u[<mode>]:: 36--untracked-files[=<mode>]:: 37 Show untracked files (Default: 'all'). 38+ 39The mode parameter is optional, and is used to specify 40the handling of untracked files. The possible options are: 41+ 42-- 43 - 'no' - Show no untracked files 44 - 'normal' - Shows untracked files and directories 45 - 'all' - Also shows individual files in untracked directories. 46-- 47+ 48See linkgit:git-config[1] for configuration variable 49used to change the default for when the option is not 50specified. 51 52-z:: 53 Terminate entries with NUL, instead of LF. This implies 54 the `--porcelain` output format if no other format is given. 55 56 57OUTPUT 58------ 59The output from this command is designed to be used as a commit 60template comment, and all the output lines are prefixed with '#'. 61The default, long format, is designed to be human readable, 62verbose and descriptive. They are subject to change in any time. 63 64The paths mentioned in the output, unlike many other git commands, are 65made relative to the current directory if you are working in a 66subdirectory (this is on purpose, to help cutting and pasting). See 67the status.relativePaths config option below. 68 69In short-format, the status of each path is shown as 70 71 XY PATH1 -> PATH2 72 73where `PATH1` is the path in the `HEAD`, and ` -> PATH2` part is 74shown only when `PATH1` corresponds to a different path in the 75index/worktree (i.e. the file is renamed). The 'XY' is a two-letter 76status code. 77 78The fields (including the `->`) are separated from each other by a 79single space. If a filename contains whitespace or other nonprintable 80characters, that field will be quoted in the manner of a C string 81literal: surrounded by ASCII double quote (34) characters, and with 82interior special characters backslash-escaped. 83 84For paths with merge conflicts, `X` and 'Y' show the modification 85states of each side of the merge. For paths that do not have merge 86conflicts, `X` shows the status of the index, and `Y` shows the status 87of the work tree. For untracked paths, `XY` are `??`. Other status 88codes can be interpreted as follows: 89 90* ' ' = unmodified 91* 'M' = modified 92* 'A' = added 93* 'D' = deleted 94* 'R' = renamed 95* 'C' = copied 96* 'U' = updated but unmerged 97 98Ignored files are not listed. 99 100 X Y Meaning 101 ------------------------------------------------- 102 [MD] not updated 103 M [ MD] updated in index 104 A [ MD] added to index 105 D [ M] deleted from index 106 R [ MD] renamed in index 107 C [ MD] copied in index 108 [MARC] index and work tree matches 109 [ MARC] M work tree changed since index 110 [ MARC] D deleted in work tree 111 ------------------------------------------------- 112 D D unmerged, both deleted 113 A U unmerged, added by us 114 U D unmerged, deleted by them 115 U A unmerged, added by them 116 D U unmerged, deleted by us 117 A A unmerged, both added 118 U U unmerged, both modified 119 ------------------------------------------------- 120 ? ? untracked 121 ------------------------------------------------- 122 123There is an alternate -z format recommended for machine parsing. In 124that format, the status field is the same, but some other things 125change. First, the '->' is omitted from rename entries and the field 126order is reversed (e.g 'from -> to' becomes 'to from'). Second, a NUL 127(ASCII 0) follows each filename, replacing space as a field separator 128and the terminating newline (but a space still separates the status 129field from the first filename). Third, filenames containing special 130characters are not specially formatted; no quoting or 131backslash-escaping is performed. 132 133CONFIGURATION 134------------- 135 136The command honors `color.status` (or `status.color` -- they 137mean the same thing and the latter is kept for backward 138compatibility) and `color.status.<slot>` configuration variables 139to colorize its output. 140 141If the config variable `status.relativePaths` is set to false, then all 142paths shown are relative to the repository root, not to the current 143directory. 144 145If `status.submodulesummary` is set to a non zero number or true (identical 146to -1 or an unlimited number), the submodule summary will be enabled for 147the long format and a summary of commits for modified submodules will be 148shown (see --summary-limit option of linkgit:git-submodule[1]). 149 150SEE ALSO 151-------- 152linkgit:gitignore[5] 153 154Author 155------ 156Written by Junio C Hamano <gitster@pobox.com>. 157 158Documentation 159-------------- 160Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. 161 162GIT 163--- 164Part of the linkgit:git[1] suite