Skip to content

Commit

Permalink
Documentation improvements for the description of short format.
Browse files Browse the repository at this point in the history
Incorporates the detailed explanation from Jeff King in
<20100410040959.GA11977@coredump.intra.peff.net> and fixes
the bug noted by Junio C Hamano in
<7vmxxc1i8g.fsf@alter.siamese.dyndns.org>.

Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Eric Raymond authored and Junio C Hamano committed Apr 23, 2010
1 parent 66cfd10 commit e92e9cd
Showing 1 changed file with 34 additions and 9 deletions.
43 changes: 34 additions & 9 deletions Documentation/git-status.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,21 +72,37 @@ In short-format, the status of each path is shown as

where `PATH1` is the path in the `HEAD`, and ` -> PATH2` part is
shown only when `PATH1` corresponds to a different path in the
index/worktree (i.e. renamed).

For unmerged entries, `X` shows the status of stage #2 (i.e. ours) and `Y`
shows the status of stage #3 (i.e. theirs).

For entries that do not have conflicts, `X` shows the status of the index,
and `Y` shows the status of the work tree. For untracked paths, `XY` are
`??`.
index/worktree (i.e. the file is renamed). The 'XY' is a two-letter
status code.

The fields (including the `->`) are separated from each other by a
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.

For paths with merge conflicts, `X` and 'Y' show the modification
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

Ignored files are not listed.

X Y Meaning
-------------------------------------------------
[MD] not updated
M [ MD] updated in index
A [ MD] added to index
D [ MD] deleted from index
D [ M] deleted from index
R [ MD] renamed in index
C [ MD] copied in index
[MARC] index and work tree matches
Expand All @@ -104,6 +120,15 @@ and `Y` shows the status of the work tree. For untracked paths, `XY` are
? ? untracked
-------------------------------------------------

There is an alternate -z format recommended for machine parsing. In
that format, the status field is the same, but some other things
change. First, the '->' is omitted from rename entries and the field
order is reversed (e.g 'from -> to' becomes 'to from'). Second, a NUL
(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
backslash-escaping is performed.

CONFIGURATION
-------------
Expand Down

0 comments on commit e92e9cd

Please sign in to comment.