Merge branch 'fn/maint-mkdtemp-compat'
[git.git] / Documentation / git-status.txt
blob1cab91b53455e0129e6c4940a2698620e2197624
1 git-status(1)
2 =============
4 NAME
5 ----
6 git-status - Show the working tree status
9 SYNOPSIS
10 --------
11 'git status' [<options>...] [--] [<pathspec>...]
13 DESCRIPTION
14 -----------
15 Displays paths that have differences between the index file and the
16 current HEAD commit, paths that have differences between the working
17 tree and the index file, and paths in the working tree that are not
18 tracked by git (and are not ignored by linkgit:gitignore[5]). The first
19 are what you _would_ commit by running `git commit`; the second and
20 third are what you _could_ commit by running 'git add' before running
21 `git commit`.
23 OPTIONS
24 -------
26 -s::
27 --short::
28         Give the output in the short-format.
30 --porcelain::
31         Give the output in a stable, easy-to-parse format for scripts.
32         Currently this is identical to --short output, but is guaranteed
33         not to change in the future, making it safe for scripts.
35 -u[<mode>]::
36 --untracked-files[=<mode>]::
37         Show untracked files (Default: 'all').
39 The mode parameter is optional, and is used to specify
40 the handling of untracked files. The possible options are:
43         - 'no'     - Show no untracked files
44         - 'normal' - Shows untracked files and directories
45         - 'all'    - Also shows individual files in untracked directories.
48 See linkgit:git-config[1] for configuration variable
49 used to change the default for when the option is not
50 specified.
52 -z::
53         Terminate entries with NUL, instead of LF.  This implies
54         the `--porcelain` output format if no other format is given.
57 OUTPUT
58 ------
59 The output from this command is designed to be used as a commit
60 template comment, and all the output lines are prefixed with '#'.
61 The default, long format, is designed to be human readable,
62 verbose and descriptive.  They are subject to change in any time.
64 The paths mentioned in the output, unlike many other git commands, are
65 made relative to the current directory if you are working in a
66 subdirectory (this is on purpose, to help cutting and pasting). See
67 the status.relativePaths config option below.
69 In short-format, the status of each path is shown as
71         XY PATH1 -> PATH2
73 where `PATH1` is the path in the `HEAD`, and ` -> PATH2` part is
74 shown only when `PATH1` corresponds to a different path in the
75 index/worktree (i.e. renamed).
77 For unmerged entries, `X` shows the status of stage #2 (i.e. ours) and `Y`
78 shows the status of stage #3 (i.e. theirs).
80 For entries that do not have conflicts, `X` shows the status of the index,
81 and `Y` shows the status of the work tree.  For untracked paths, `XY` are
82 `??`.
84     X          Y     Meaning
85     -------------------------------------------------
86               [MD]   not updated
87     M        [ MD]   updated in index
88     A        [ MD]   added to index
89     D        [ MD]   deleted from index
90     R        [ MD]   renamed in index
91     C        [ MD]   copied in index
92     [MARC]           index and work tree matches
93     [ MARC]     M    work tree changed since index
94     [ MARC]     D    deleted in work tree
95     -------------------------------------------------
96     D           D    unmerged, both deleted
97     A           U    unmerged, added by us
98     U           D    unmerged, deleted by them
99     U           A    unmerged, added by them
100     D           U    unmerged, deleted by us
101     A           A    unmerged, both added
102     U           U    unmerged, both modified
103     -------------------------------------------------
104     ?           ?    untracked
105     -------------------------------------------------
108 CONFIGURATION
109 -------------
111 The command honors `color.status` (or `status.color` -- they
112 mean the same thing and the latter is kept for backward
113 compatibility) and `color.status.<slot>` configuration variables
114 to colorize its output.
116 If the config variable `status.relativePaths` is set to false, then all
117 paths shown are relative to the repository root, not to the current
118 directory.
120 If `status.submodulesummary` is set to a non zero number or true (identical
121 to -1 or an unlimited number), the submodule summary will be enabled for
122 the long format and a summary of commits for modified submodules will be
123 shown (see --summary-limit option of linkgit:git-submodule[1]).
125 SEE ALSO
126 --------
127 linkgit:gitignore[5]
129 Author
130 ------
131 Written by Junio C Hamano <gitster@pobox.com>.
133 Documentation
134 --------------
135 Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
139 Part of the linkgit:git[1] suite