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-b:: 31--branch:: 32 Show the branch and tracking info even in short-format. 33 34--porcelain:: 35 Give the output in an easy-to-parse format for scripts. 36 This is similar to the short output, but will remain stable 37 across git versions and regardless of user configuration. See 38 below for details. 39 40-u[<mode>]:: 41--untracked-files[=<mode>]:: 42 Show untracked files. 43+ 44The mode parameter is optional (defaults to 'all'), and is used to 45specify the handling of untracked files; when -u is not used, the 46default is 'normal', i.e. show untracked files and directories. 47+ 48The possible options are: 49+ 50 - 'no' - Show no untracked files 51 - 'normal' - Shows untracked files and directories 52 - 'all' - Also shows individual files in untracked directories. 53+ 54The default can be changed using the status.showUntrackedFiles 55configuration variable documented in linkgit:git-config[1]. 56 57--ignore-submodules[=<when>]:: 58 Ignore changes to submodules when looking for changes. <when> can be 59 either "none", "untracked", "dirty" or "all", which is the default. 60 Using "none" will consider the submodule modified when it either contains 61 untracked or modified files or its HEAD differs from the commit recorded 62 in the superproject and can be used to override any settings of the 63 'ignore' option in linkgit:git-config[1] or linkgit:gitmodules[5]. When 64 "untracked" is used submodules are not considered dirty when they only 65 contain untracked content (but they are still scanned for modified 66 content). Using "dirty" ignores all changes to the work tree of submodules, 67 only changes to the commits stored in the superproject are shown (this was 68 the behavior before 1.7.0). Using "all" hides all changes to submodules 69 (and suppresses the output of submodule summaries when the config option 70 `status.submodulesummary` is set). 71 72-z:: 73 Terminate entries with NUL, instead of LF. This implies 74 the `--porcelain` output format if no other format is given. 75 76 77OUTPUT 78------ 79The output from this command is designed to be used as a commit 80template comment, and all the output lines are prefixed with '#'. 81The default, long format, is designed to be human readable, 82verbose and descriptive. Its contents and format are subject to change 83at any time. 84 85The paths mentioned in the output, unlike many other git commands, are 86made relative to the current directory if you are working in a 87subdirectory (this is on purpose, to help cutting and pasting). See 88the status.relativePaths config option below. 89 90Short Format 91~~~~~~~~~~~~ 92 93In the short-format, the status of each path is shown as 94 95 XY PATH1 -> PATH2 96 97where `PATH1` is the path in the `HEAD`, and the ` \-> PATH2` part is 98shown only when `PATH1` corresponds to a different path in the 99index/worktree (i.e. the file is renamed). The 'XY' is a two-letter 100status code. 101 102The fields (including the `\->`) are separated from each other by a 103single space. If a filename contains whitespace or other nonprintable 104characters, that field will be quoted in the manner of a C string 105literal: surrounded by ASCII double quote (34) characters, and with 106interior special characters backslash-escaped. 107 108For paths with merge conflicts, `X` and 'Y' show the modification 109states of each side of the merge. For paths that do not have merge 110conflicts, `X` shows the status of the index, and `Y` shows the status 111of the work tree. For untracked paths, `XY` are `??`. Other status 112codes can be interpreted as follows: 113 114* ' ' = unmodified 115* 'M' = modified 116* 'A' = added 117* 'D' = deleted 118* 'R' = renamed 119* 'C' = copied 120* 'U' = updated but unmerged 121 122Ignored files are not listed. 123 124 X Y Meaning 125 ------------------------------------------------- 126 [MD] not updated 127 M [ MD] updated in index 128 A [ MD] added to index 129 D [ M] deleted from index 130 R [ MD] renamed in index 131 C [ MD] copied in index 132 [MARC] index and work tree matches 133 [ MARC] M work tree changed since index 134 [ MARC] D deleted in work tree 135 ------------------------------------------------- 136 D D unmerged, both deleted 137 A U unmerged, added by us 138 U D unmerged, deleted by them 139 U A unmerged, added by them 140 D U unmerged, deleted by us 141 A A unmerged, both added 142 U U unmerged, both modified 143 ------------------------------------------------- 144 ? ? untracked 145 ------------------------------------------------- 146 147If -b is used the short-format status is preceded by a line 148 149## branchname tracking info 150 151Porcelain Format 152~~~~~~~~~~~~~~~~ 153 154The porcelain format is similar to the short format, but is guaranteed 155not to change in a backwards-incompatible way between git versions or 156based on user configuration. This makes it ideal for parsing by scripts. 157The description of the short format above also describes the porcelain 158format, with a few exceptions: 159 1601. The user's color.status configuration is not respected; color will 161 always be off. 162 1632. The user's status.relativePaths configuration is not respected; paths 164 shown will always be relative to the repository root. 165 166There is also an alternate -z format recommended for machine parsing. In 167that format, the status field is the same, but some other things 168change. First, the '\->' is omitted from rename entries and the field 169order is reversed (e.g 'from \-> to' becomes 'to from'). Second, a NUL 170(ASCII 0) follows each filename, replacing space as a field separator 171and the terminating newline (but a space still separates the status 172field from the first filename). Third, filenames containing special 173characters are not specially formatted; no quoting or 174backslash-escaping is performed. Fourth, there is no branch line. 175 176CONFIGURATION 177------------- 178 179The command honors `color.status` (or `status.color` -- they 180mean the same thing and the latter is kept for backward 181compatibility) and `color.status.<slot>` configuration variables 182to colorize its output. 183 184If the config variable `status.relativePaths` is set to false, then all 185paths shown are relative to the repository root, not to the current 186directory. 187 188If `status.submodulesummary` is set to a non zero number or true (identical 189to -1 or an unlimited number), the submodule summary will be enabled for 190the long format and a summary of commits for modified submodules will be 191shown (see --summary-limit option of linkgit:git-submodule[1]). 192 193SEE ALSO 194-------- 195linkgit:gitignore[5] 196 197GIT 198--- 199Part of the linkgit:git[1] suite