2005-09-08 04:26:23 +04:00
|
|
|
git-status(1)
|
|
|
|
=============
|
2005-08-15 04:24:36 +04:00
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
2007-01-19 02:53:37 +03:00
|
|
|
git-status - Show the working tree status
|
2005-08-15 04:24:36 +04:00
|
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
2011-07-02 06:38:26 +04:00
|
|
|
[verse]
|
2009-08-15 13:27:39 +04:00
|
|
|
'git status' [<options>...] [--] [<pathspec>...]
|
2005-08-15 04:24:36 +04:00
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
2007-12-08 12:00:31 +03:00
|
|
|
Displays paths that have differences between the index file and the
|
|
|
|
current HEAD commit, paths that have differences between the working
|
|
|
|
tree and the index file, and paths in the working tree that are not
|
2013-01-21 23:17:53 +04:00
|
|
|
tracked by Git (and are not ignored by linkgit:gitignore[5]). The first
|
2007-12-08 12:00:31 +03:00
|
|
|
are what you _would_ commit by running `git commit`; the second and
|
2010-01-10 02:33:00 +03:00
|
|
|
third are what you _could_ commit by running 'git add' before running
|
2007-12-08 12:00:31 +03:00
|
|
|
`git commit`.
|
2005-08-15 04:24:36 +04:00
|
|
|
|
2009-08-15 13:27:39 +04:00
|
|
|
OPTIONS
|
|
|
|
-------
|
|
|
|
|
|
|
|
-s::
|
|
|
|
--short::
|
|
|
|
Give the output in the short-format.
|
|
|
|
|
2010-05-25 18:52:03 +04:00
|
|
|
-b::
|
|
|
|
--branch::
|
|
|
|
Show the branch and tracking info even in short-format.
|
|
|
|
|
2009-09-05 12:55:37 +04:00
|
|
|
--porcelain::
|
2011-05-27 06:31:51 +04:00
|
|
|
Give the output in an easy-to-parse format for scripts.
|
|
|
|
This is similar to the short output, but will remain stable
|
2013-01-21 23:17:53 +04:00
|
|
|
across Git versions and regardless of user configuration. See
|
2011-05-27 06:31:51 +04:00
|
|
|
below for details.
|
2009-09-05 12:55:37 +04:00
|
|
|
|
2012-10-18 18:15:50 +04:00
|
|
|
--long::
|
|
|
|
Give the output in the long-format. This is the default.
|
|
|
|
|
2009-08-15 13:27:39 +04:00
|
|
|
-u[<mode>]::
|
|
|
|
--untracked-files[=<mode>]::
|
2011-02-21 23:05:25 +03:00
|
|
|
Show untracked files.
|
2009-08-15 13:27:39 +04:00
|
|
|
+
|
2011-02-21 23:05:25 +03:00
|
|
|
The mode parameter is optional (defaults to 'all'), and is used to
|
2013-03-15 20:53:48 +04:00
|
|
|
specify the handling of untracked files.
|
2011-02-21 23:05:25 +03:00
|
|
|
+
|
|
|
|
The possible options are:
|
2009-08-15 13:27:39 +04:00
|
|
|
+
|
2013-03-15 20:53:48 +04:00
|
|
|
- 'no' - Show no untracked files.
|
|
|
|
- 'normal' - Shows untracked files and directories.
|
2009-08-15 13:27:39 +04:00
|
|
|
- 'all' - Also shows individual files in untracked directories.
|
|
|
|
+
|
2013-03-15 20:53:48 +04:00
|
|
|
When `-u` option is not used, untracked files and directories are
|
|
|
|
shown (i.e. the same as specifying `normal`), to help you avoid
|
|
|
|
forgetting to add newly created files. Because it takes extra work
|
|
|
|
to find untracked files in the filesystem, this mode may take some
|
|
|
|
time in a large working tree. You can use `no` to have `git status`
|
|
|
|
return more quickly without showing untracked files.
|
|
|
|
+
|
2011-02-21 23:05:25 +03:00
|
|
|
The default can be changed using the status.showUntrackedFiles
|
|
|
|
configuration variable documented in linkgit:git-config[1].
|
2009-08-15 13:27:39 +04:00
|
|
|
|
2010-06-25 18:56:47 +04:00
|
|
|
--ignore-submodules[=<when>]::
|
|
|
|
Ignore changes to submodules when looking for changes. <when> can be
|
2010-08-06 02:39:25 +04:00
|
|
|
either "none", "untracked", "dirty" or "all", which is the default.
|
|
|
|
Using "none" will consider the submodule modified when it either contains
|
|
|
|
untracked or modified files or its HEAD differs from the commit recorded
|
|
|
|
in the superproject and can be used to override any settings of the
|
2010-08-06 02:40:48 +04:00
|
|
|
'ignore' option in linkgit:git-config[1] or linkgit:gitmodules[5]. When
|
2010-06-25 18:56:47 +04:00
|
|
|
"untracked" is used submodules are not considered dirty when they only
|
|
|
|
contain untracked content (but they are still scanned for modified
|
|
|
|
content). Using "dirty" ignores all changes to the work tree of submodules,
|
|
|
|
only changes to the commits stored in the superproject are shown (this was
|
|
|
|
the behavior before 1.7.0). Using "all" hides all changes to submodules
|
|
|
|
(and suppresses the output of submodule summaries when the config option
|
|
|
|
`status.submodulesummary` is set).
|
|
|
|
|
2011-06-02 20:07:11 +04:00
|
|
|
--ignored::
|
|
|
|
Show ignored files as well.
|
|
|
|
|
2009-08-15 13:27:39 +04:00
|
|
|
-z::
|
2009-09-05 12:55:37 +04:00
|
|
|
Terminate entries with NUL, instead of LF. This implies
|
|
|
|
the `--porcelain` output format if no other format is given.
|
2007-12-08 12:00:31 +03:00
|
|
|
|
2012-04-13 14:54:39 +04:00
|
|
|
--column[=<options>]::
|
|
|
|
--no-column::
|
|
|
|
Display untracked files in columns. See configuration variable
|
|
|
|
column.status for option syntax.`--column` and `--no-column`
|
|
|
|
without options are equivalent to 'always' and 'never'
|
|
|
|
respectively.
|
|
|
|
|
2005-08-15 04:24:36 +04:00
|
|
|
|
|
|
|
OUTPUT
|
|
|
|
------
|
|
|
|
The output from this command is designed to be used as a commit
|
2014-03-21 18:10:18 +04:00
|
|
|
template comment.
|
2009-08-15 13:27:39 +04:00
|
|
|
The default, long format, is designed to be human readable,
|
2011-05-27 06:31:11 +04:00
|
|
|
verbose and descriptive. Its contents and format are subject to change
|
|
|
|
at any time.
|
2005-08-15 04:24:36 +04:00
|
|
|
|
2013-01-21 23:17:53 +04:00
|
|
|
The paths mentioned in the output, unlike many other Git commands, are
|
2007-12-08 12:00:31 +03:00
|
|
|
made relative to the current directory if you are working in a
|
2007-12-08 00:26:07 +03:00
|
|
|
subdirectory (this is on purpose, to help cutting and pasting). See
|
|
|
|
the status.relativePaths config option below.
|
2007-12-06 20:15:39 +03:00
|
|
|
|
2011-05-27 06:31:51 +04:00
|
|
|
Short Format
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
2011-05-27 06:31:11 +04:00
|
|
|
In the short-format, the status of each path is shown as
|
2009-08-15 13:27:39 +04:00
|
|
|
|
|
|
|
XY PATH1 -> PATH2
|
|
|
|
|
docs: stop using asciidoc no-inline-literal
In asciidoc 7, backticks like `foo` produced a typographic
effect, but did not otherwise affect the syntax. In asciidoc
8, backticks introduce an "inline literal" inside which markup
is not interpreted. To keep compatibility with existing
documents, asciidoc 8 has a "no-inline-literal" attribute to
keep the old behavior. We enabled this so that the
documentation could be built on either version.
It has been several years now, and asciidoc 7 is no longer
in wide use. We can now decide whether or not we want
inline literals on their own merits, which are:
1. The source is much easier to read when the literal
contains punctuation. You can use `master~1` instead
of `master{tilde}1`.
2. They are less error-prone. Because of point (1), we
tend to make mistakes and forget the extra layer of
quoting.
This patch removes the no-inline-literal attribute from the
Makefile and converts every use of backticks in the
documentation to an inline literal (they must be cleaned up,
or the example above would literally show "{tilde}" in the
output).
Problematic sites were found by grepping for '`.*[{\\]' and
examined and fixed manually. The results were then verified
by comparing the output of "html2text" on the set of
generated html pages. Doing so revealed that in addition to
making the source more readable, this patch fixes several
formatting bugs:
- HTML rendering used the ellipsis character instead of
literal "..." in code examples (like "git log A...B")
- some code examples used the right-arrow character
instead of '->' because they failed to quote
- api-config.txt did not quote tilde, and the resulting
HTML contained a bogus snippet like:
<tt><sub></tt> foo <tt></sub>bar</tt>
which caused some parsers to choke and omit whole
sections of the page.
- git-commit.txt confused ``foo`` (backticks inside a
literal) with ``foo'' (matched double-quotes)
- mentions of `A U Thor <author@example.com>` used to
erroneously auto-generate a mailto footnote for
author@example.com
- the description of --word-diff=plain incorrectly showed
the output as "[-removed-] and {added}", not "{+added+}".
- using "prime" notation like:
commit `C` and its replacement `C'`
confused asciidoc into thinking that everything between
the first backtick and the final apostrophe were meant
to be inside matched quotes
- asciidoc got confused by the escaping of some of our
asterisks. In particular,
`credential.\*` and `credential.<url>.\*`
properly escaped the asterisk in the first case, but
literally passed through the backslash in the second
case.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-26 12:51:57 +04:00
|
|
|
where `PATH1` is the path in the `HEAD`, and the " `-> PATH2`" part is
|
2009-08-15 13:27:39 +04:00
|
|
|
shown only when `PATH1` corresponds to a different path in the
|
2014-10-19 18:17:15 +04:00
|
|
|
index/worktree (i.e. the file is renamed). The `XY` is a two-letter
|
2010-04-23 21:40:15 +04:00
|
|
|
status code.
|
|
|
|
|
docs: stop using asciidoc no-inline-literal
In asciidoc 7, backticks like `foo` produced a typographic
effect, but did not otherwise affect the syntax. In asciidoc
8, backticks introduce an "inline literal" inside which markup
is not interpreted. To keep compatibility with existing
documents, asciidoc 8 has a "no-inline-literal" attribute to
keep the old behavior. We enabled this so that the
documentation could be built on either version.
It has been several years now, and asciidoc 7 is no longer
in wide use. We can now decide whether or not we want
inline literals on their own merits, which are:
1. The source is much easier to read when the literal
contains punctuation. You can use `master~1` instead
of `master{tilde}1`.
2. They are less error-prone. Because of point (1), we
tend to make mistakes and forget the extra layer of
quoting.
This patch removes the no-inline-literal attribute from the
Makefile and converts every use of backticks in the
documentation to an inline literal (they must be cleaned up,
or the example above would literally show "{tilde}" in the
output).
Problematic sites were found by grepping for '`.*[{\\]' and
examined and fixed manually. The results were then verified
by comparing the output of "html2text" on the set of
generated html pages. Doing so revealed that in addition to
making the source more readable, this patch fixes several
formatting bugs:
- HTML rendering used the ellipsis character instead of
literal "..." in code examples (like "git log A...B")
- some code examples used the right-arrow character
instead of '->' because they failed to quote
- api-config.txt did not quote tilde, and the resulting
HTML contained a bogus snippet like:
<tt><sub></tt> foo <tt></sub>bar</tt>
which caused some parsers to choke and omit whole
sections of the page.
- git-commit.txt confused ``foo`` (backticks inside a
literal) with ``foo'' (matched double-quotes)
- mentions of `A U Thor <author@example.com>` used to
erroneously auto-generate a mailto footnote for
author@example.com
- the description of --word-diff=plain incorrectly showed
the output as "[-removed-] and {added}", not "{+added+}".
- using "prime" notation like:
commit `C` and its replacement `C'`
confused asciidoc into thinking that everything between
the first backtick and the final apostrophe were meant
to be inside matched quotes
- asciidoc got confused by the escaping of some of our
asterisks. In particular,
`credential.\*` and `credential.<url>.\*`
properly escaped the asterisk in the first case, but
literally passed through the backslash in the second
case.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-26 12:51:57 +04:00
|
|
|
The fields (including the `->`) are separated from each other by a
|
2010-04-23 21:40:15 +04:00
|
|
|
single space. If a filename contains whitespace or other nonprintable
|
|
|
|
characters, that field will be quoted in the manner of a C string
|
|
|
|
literal: surrounded by ASCII double quote (34) characters, and with
|
|
|
|
interior special characters backslash-escaped.
|
|
|
|
|
2014-10-19 18:17:15 +04:00
|
|
|
For paths with merge conflicts, `X` and `Y` show the modification
|
2010-04-23 21:40:15 +04:00
|
|
|
states of each side of the merge. For paths that do not have merge
|
|
|
|
conflicts, `X` shows the status of the index, and `Y` shows the status
|
|
|
|
of the work tree. For untracked paths, `XY` are `??`. Other status
|
|
|
|
codes can be interpreted as follows:
|
|
|
|
|
|
|
|
* ' ' = unmodified
|
|
|
|
* 'M' = modified
|
|
|
|
* 'A' = added
|
|
|
|
* 'D' = deleted
|
|
|
|
* 'R' = renamed
|
|
|
|
* 'C' = copied
|
|
|
|
* 'U' = updated but unmerged
|
|
|
|
|
2011-06-30 04:03:12 +04:00
|
|
|
Ignored files are not listed, unless `--ignored` option is in effect,
|
|
|
|
in which case `XY` are `!!`.
|
2009-08-15 13:27:39 +04:00
|
|
|
|
|
|
|
X Y Meaning
|
|
|
|
-------------------------------------------------
|
|
|
|
[MD] not updated
|
|
|
|
M [ MD] updated in index
|
|
|
|
A [ MD] added to index
|
2010-04-23 21:40:15 +04:00
|
|
|
D [ M] deleted from index
|
2009-08-15 13:27:39 +04:00
|
|
|
R [ MD] renamed in index
|
|
|
|
C [ MD] copied in index
|
|
|
|
[MARC] index and work tree matches
|
|
|
|
[ MARC] M work tree changed since index
|
|
|
|
[ MARC] D deleted in work tree
|
|
|
|
-------------------------------------------------
|
|
|
|
D D unmerged, both deleted
|
|
|
|
A U unmerged, added by us
|
|
|
|
U D unmerged, deleted by them
|
|
|
|
U A unmerged, added by them
|
|
|
|
D U unmerged, deleted by us
|
|
|
|
A A unmerged, both added
|
|
|
|
U U unmerged, both modified
|
|
|
|
-------------------------------------------------
|
|
|
|
? ? untracked
|
2011-06-02 20:07:11 +04:00
|
|
|
! ! ignored
|
2009-08-15 13:27:39 +04:00
|
|
|
-------------------------------------------------
|
|
|
|
|
2010-05-25 18:52:03 +04:00
|
|
|
If -b is used the short-format status is preceded by a line
|
|
|
|
|
|
|
|
## branchname tracking info
|
|
|
|
|
2011-05-27 06:31:51 +04:00
|
|
|
Porcelain Format
|
|
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
The porcelain format is similar to the short format, but is guaranteed
|
2013-01-21 23:17:53 +04:00
|
|
|
not to change in a backwards-incompatible way between Git versions or
|
2011-05-27 06:31:51 +04:00
|
|
|
based on user configuration. This makes it ideal for parsing by scripts.
|
|
|
|
The description of the short format above also describes the porcelain
|
|
|
|
format, with a few exceptions:
|
|
|
|
|
|
|
|
1. The user's color.status configuration is not respected; color will
|
|
|
|
always be off.
|
|
|
|
|
|
|
|
2. The user's status.relativePaths configuration is not respected; paths
|
|
|
|
shown will always be relative to the repository root.
|
|
|
|
|
|
|
|
There is also an alternate -z format recommended for machine parsing. In
|
2010-04-23 21:40:15 +04:00
|
|
|
that format, the status field is the same, but some other things
|
2011-05-27 06:32:41 +04:00
|
|
|
change. First, the '\->' is omitted from rename entries and the field
|
|
|
|
order is reversed (e.g 'from \-> to' becomes 'to from'). Second, a NUL
|
2010-04-23 21:40:15 +04:00
|
|
|
(ASCII 0) follows each filename, replacing space as a field separator
|
|
|
|
and the terminating newline (but a space still separates the status
|
|
|
|
field from the first filename). Third, filenames containing special
|
|
|
|
characters are not specially formatted; no quoting or
|
2012-05-08 01:09:04 +04:00
|
|
|
backslash-escaping is performed.
|
2005-08-15 04:24:36 +04:00
|
|
|
|
2007-01-17 12:11:01 +03:00
|
|
|
CONFIGURATION
|
|
|
|
-------------
|
|
|
|
|
|
|
|
The command honors `color.status` (or `status.color` -- they
|
|
|
|
mean the same thing and the latter is kept for backward
|
|
|
|
compatibility) and `color.status.<slot>` configuration variables
|
|
|
|
to colorize its output.
|
|
|
|
|
2007-12-08 00:26:07 +03:00
|
|
|
If the config variable `status.relativePaths` is set to false, then all
|
2009-11-26 18:24:38 +03:00
|
|
|
paths shown are relative to the repository root, not to the current
|
|
|
|
directory.
|
2007-12-08 00:26:07 +03:00
|
|
|
|
2008-04-12 19:05:32 +04:00
|
|
|
If `status.submodulesummary` is set to a non zero number or true (identical
|
2009-09-05 12:52:18 +04:00
|
|
|
to -1 or an unlimited number), the submodule summary will be enabled for
|
|
|
|
the long format and a summary of commits for modified submodules will be
|
2013-09-11 23:07:15 +04:00
|
|
|
shown (see --summary-limit option of linkgit:git-submodule[1]). Please note
|
|
|
|
that the summary output from the status command will be suppressed for all
|
|
|
|
submodules when `diff.ignoreSubmodules` is set to 'all' or only for those
|
|
|
|
submodules where `submodule.<name>.ignore=all`. To also view the summary for
|
|
|
|
ignored submodules you can either use the --ignore-submodules=dirty command
|
|
|
|
line option or the 'git submodule summary' command, which shows a similar
|
|
|
|
output but does not honor these settings.
|
2008-04-12 19:05:32 +04:00
|
|
|
|
2008-05-29 03:55:27 +04:00
|
|
|
SEE ALSO
|
2007-06-02 21:08:54 +04:00
|
|
|
--------
|
2007-12-29 09:20:38 +03:00
|
|
|
linkgit:gitignore[5]
|
2007-01-17 12:11:01 +03:00
|
|
|
|
2005-08-15 04:24:36 +04:00
|
|
|
GIT
|
|
|
|
---
|
2008-06-06 11:07:32 +04:00
|
|
|
Part of the linkgit:git[1] suite
|