Home Explore Blog CI



git

5th chunk of `Documentation/git-status.adoc`
ce2538ff80e788f104078bd1a6c968325399dd503e0b728b0000000100000fa5
 of three different line formats may be used to describe
an entry depending on the type of change.  Tracked entries are printed
in an undefined order; parsers should allow for a mixture of the 3
line types in any order.

Ordinary changed entries have the following format:

    1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path>

Renamed or copied entries have the following format:

    2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <X><score> <path><sep><origPath>

....
Field       Meaning
--------------------------------------------------------
<XY>        A 2 character field containing the staged and
	    unstaged XY values described in the short format,
	    with unchanged indicated by a "." rather than
	    a space.
<sub>       A 4 character field describing the submodule state.
	    "N..." when the entry is not a submodule.
	    "S<c><m><u>" when the entry is a submodule.
	    <c> is "C" if the commit changed; otherwise ".".
	    <m> is "M" if it has tracked changes; otherwise ".".
	    <u> is "U" if there are untracked changes; otherwise ".".
<mH>        The octal file mode in HEAD.
<mI>        The octal file mode in the index.
<mW>        The octal file mode in the worktree.
<hH>        The object name in HEAD.
<hI>        The object name in the index.
<X><score>  The rename or copy score (denoting the percentage
	    of similarity between the source and target of the
	    move or copy). For example "R100" or "C75".
<path>      The pathname.  In a renamed/copied entry, this
	    is the target path.
<sep>       When the `-z` option is used, the 2 pathnames are separated
	    with a NUL (ASCII 0x00) byte; otherwise, a tab (ASCII 0x09)
	    byte separates them.
<origPath>  The pathname in the commit at HEAD or in the index.
	    This is only present in a renamed/copied entry, and
	    tells where the renamed/copied contents came from.
--------------------------------------------------------
....

Unmerged entries have the following format; the first character is
a "u" to distinguish from ordinary changed entries.

    u <XY> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <path>

....
Field       Meaning
--------------------------------------------------------
<XY>        A 2 character field describing the conflict type
	    as described in the short format.
<sub>       A 4 character field describing the submodule state
	    as described above.
<m1>        The octal file mode in stage 1.
<m2>        The octal file mode in stage 2.
<m3>        The octal file mode in stage 3.
<mW>        The octal file mode in the worktree.
<h1>        The object name in stage 1.
<h2>        The object name in stage 2.
<h3>        The object name in stage 3.
<path>      The pathname.
--------------------------------------------------------
....

Other Items
^^^^^^^^^^^

Following the tracked entries (and if requested), a series of
lines will be printed for untracked and then ignored items
found in the worktree.

Untracked items have the following format:

    ? <path>

Ignored items have the following format:

    ! <path>

Pathname Format Notes and -z
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

When the `-z` option is given, pathnames are printed as is and
without any quoting and lines are terminated with a NUL (ASCII 0x00)
byte.

Without the `-z` option, pathnames with "unusual" characters are
quoted as explained for the configuration variable `core.quotePath`
(see linkgit:git-config[1]).


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.

If the config variable `status.relativePaths` is set to false, then all
paths shown are relative to the repository root, not to the current
directory.

If `status.submoduleSummary` is set to a non zero number or true (identical
to -1 or an unlimited number), the submodule summary will be enabled for
the long format and a summary of commits for modified submodules

Title: Git Status Format Specifications
Summary
The Git status command has various formats for describing changes, including ordinary changed entries, renamed or copied entries, and unmerged entries, each with specific fields and formats, and also reports on untracked and ignored items, with options for customizing output, such as coloring and pathname formatting, through configuration variables.