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