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