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--ignored:: 73 Show ignored files as well. 74 75-z:: 76 Terminate entries with NUL, instead of LF. This implies 77 the `--porcelain` output format if no other format is given. 78 79 80OUTPUT 81------ 82The output from this command is designed to be used as a commit 83template comment, and all the output lines are prefixed with '#'. 84The default, long format, is designed to be human readable, 85verbose and descriptive. Its contents and format are subject to change 86at any time. 87 88The paths mentioned in the output, unlike many other git commands, are 89made relative to the current directory if you are working in a 90subdirectory (this is on purpose, to help cutting and pasting). See 91the status.relativePaths config option below. 92 93Short Format 94~~~~~~~~~~~~ 95 96In the short-format, the status of each path is shown as 97 98 XY PATH1 -> PATH2 99 100where `PATH1` is the path in the `HEAD`, and the ` \-> PATH2` part is 101shown only when `PATH1` corresponds to a different path in the 102index/worktree (i.e. the file is renamed). The 'XY' is a two-letter 103status code. 104 105The fields (including the `\->`) are separated from each other by a 106single space. If a filename contains whitespace or other nonprintable 107characters, that field will be quoted in the manner of a C string 108literal: surrounded by ASCII double quote (34) characters, and with 109interior special characters backslash-escaped. 110 111For paths with merge conflicts, `X` and 'Y' show the modification 112states of each side of the merge. For paths that do not have merge 113conflicts, `X` shows the status of the index, and `Y` shows the status 114of the work tree. For untracked paths, `XY` are `??`. Other status 115codes can be interpreted as follows: 116 117* ' ' = unmodified 118* 'M' = modified 119* 'A' = added 120* 'D' = deleted 121* 'R' = renamed 122* 'C' = copied 123* 'U' = updated but unmerged 124 125Ignored files are not listed, unless `--ignored` option is in effect, 126in which case `XY` are `!!`. 127 128 X Y Meaning 129 ------------------------------------------------- 130 [MD] not updated 131 M [ MD] updated in index 132 A [ MD] added to index 133 D [ M] deleted from index 134 R [ MD] renamed in index 135 C [ MD] copied in index 136 [MARC] index and work tree matches 137 [ MARC] M work tree changed since index 138 [ MARC] D deleted in work tree 139 ------------------------------------------------- 140 D D unmerged, both deleted 141 A U unmerged, added by us 142 U D unmerged, deleted by them 143 U A unmerged, added by them 144 D U unmerged, deleted by us 145 A A unmerged, both added 146 U U unmerged, both modified 147 ------------------------------------------------- 148 ? ? untracked 149 ! ! ignored 150 ------------------------------------------------- 151 152If -b is used the short-format status is preceded by a line 153 154## branchname tracking info 155 156Porcelain Format 157~~~~~~~~~~~~~~~~ 158 159The porcelain format is similar to the short format, but is guaranteed 160not to change in a backwards-incompatible way between git versions or 161based on user configuration. This makes it ideal for parsing by scripts. 162The description of the short format above also describes the porcelain 163format, with a few exceptions: 164 1651. The user's color.status configuration is not respected; color will 166 always be off. 167 1682. The user's status.relativePaths configuration is not respected; paths 169 shown will always be relative to the repository root. 170 171There is also an alternate -z format recommended for machine parsing. In 172that format, the status field is the same, but some other things 173change. First, the '\->' is omitted from rename entries and the field 174order is reversed (e.g 'from \-> to' becomes 'to from'). Second, a NUL 175(ASCII 0) follows each filename, replacing space as a field separator 176and the terminating newline (but a space still separates the status 177field from the first filename). Third, filenames containing special 178characters are not specially formatted; no quoting or 179backslash-escaping is performed. Fourth, there is no branch line. 180 181CONFIGURATION 182------------- 183 184The command honors `color.status` (or `status.color` -- they 185mean the same thing and the latter is kept for backward 186compatibility) and `color.status.<slot>` configuration variables 187to colorize its output. 188 189If the config variable `status.relativePaths` is set to false, then all 190paths shown are relative to the repository root, not to the current 191directory. 192 193If `status.submodulesummary` is set to a non zero number or true (identical 194to -1 or an unlimited number), the submodule summary will be enabled for 195the long format and a summary of commits for modified submodules will be 196shown (see --summary-limit option of linkgit:git-submodule[1]). 197 198SEE ALSO 199-------- 200linkgit:gitignore[5] 201 202GIT 203--- 204Part of the linkgit:git[1] suite