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