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