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