made the pack completely portable and wrote relevent bat files to go with it
This commit is contained in:
529
gitportable/mingw64/share/doc/git-doc/git-status.adoc
Normal file
529
gitportable/mingw64/share/doc/git-doc/git-status.adoc
Normal file
@@ -0,0 +1,529 @@
|
||||
git-status(1)
|
||||
=============
|
||||
|
||||
NAME
|
||||
----
|
||||
git-status - Show the working tree status
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git status' [<options>] [--] [<pathspec>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
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
|
||||
tracked by Git (and are not ignored by linkgit:gitignore[5]). The first
|
||||
are what you _would_ commit by running `git commit`; the second and
|
||||
third are what you _could_ commit by running 'git add' before running
|
||||
`git commit`.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
-s::
|
||||
--short::
|
||||
Give the output in the short-format.
|
||||
|
||||
-b::
|
||||
--branch::
|
||||
Show the branch and tracking info even in short-format.
|
||||
|
||||
--show-stash::
|
||||
Show the number of entries currently stashed away.
|
||||
|
||||
--porcelain[=<version>]::
|
||||
Give the output in an easy-to-parse format for scripts.
|
||||
This is similar to the short output, but will remain stable
|
||||
across Git versions and regardless of user configuration. See
|
||||
below for details.
|
||||
+
|
||||
The version parameter is used to specify the format version.
|
||||
This is optional and defaults to the original version 'v1' format.
|
||||
|
||||
--long::
|
||||
Give the output in the long-format. This is the default.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
In addition to the names of files that have been changed, also
|
||||
show the textual changes that are staged to be committed
|
||||
(i.e., like the output of `git diff --cached`). If `-v` is specified
|
||||
twice, then also show the changes in the working tree that
|
||||
have not yet been staged (i.e., like the output of `git diff`).
|
||||
|
||||
-u[<mode>]::
|
||||
--untracked-files[=<mode>]::
|
||||
Show untracked files.
|
||||
+
|
||||
--
|
||||
The mode parameter is used to specify the handling of untracked files.
|
||||
It is optional: it defaults to 'all', and if specified, it must be
|
||||
stuck to the option (e.g. `-uno`, but not `-u no`).
|
||||
|
||||
The possible options are:
|
||||
|
||||
- 'no' - Show no untracked files.
|
||||
- 'normal' - Shows untracked files and directories.
|
||||
- 'all' - Also shows individual files in untracked directories.
|
||||
|
||||
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.
|
||||
Consider enabling untracked cache and split index if supported (see
|
||||
`git update-index --untracked-cache` and `git update-index
|
||||
--split-index`), Otherwise you can use `no` to have `git status`
|
||||
return more quickly without showing untracked files.
|
||||
All usual spellings for Boolean value `true` are taken as `normal`
|
||||
and `false` as `no`.
|
||||
|
||||
The default can be changed using the status.showUntrackedFiles
|
||||
configuration variable documented in linkgit:git-config[1].
|
||||
--
|
||||
|
||||
--ignore-submodules[=<when>]::
|
||||
Ignore changes to submodules when looking for changes. <when> can be
|
||||
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
|
||||
'ignore' option in linkgit:git-config[1] or linkgit:gitmodules[5]. When
|
||||
"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).
|
||||
|
||||
--ignored[=<mode>]::
|
||||
Show ignored files as well.
|
||||
+
|
||||
--
|
||||
The mode parameter is used to specify the handling of ignored files.
|
||||
It is optional: it defaults to 'traditional'.
|
||||
|
||||
The possible options are:
|
||||
|
||||
- 'traditional' - Shows ignored files and directories, unless
|
||||
--untracked-files=all is specified, in which case
|
||||
individual files in ignored directories are
|
||||
displayed.
|
||||
- 'no' - Show no ignored files.
|
||||
- 'matching' - Shows ignored files and directories matching an
|
||||
ignore pattern.
|
||||
|
||||
When 'matching' mode is specified, paths that explicitly match an
|
||||
ignored pattern are shown. If a directory matches an ignore pattern,
|
||||
then it is shown, but not paths contained in the ignored directory. If
|
||||
a directory does not match an ignore pattern, but all contents are
|
||||
ignored, then the directory is not shown, but all contents are shown.
|
||||
--
|
||||
|
||||
-z::
|
||||
Terminate entries with NUL, instead of LF. This implies
|
||||
the `--porcelain=v1` output format if no other format is given.
|
||||
|
||||
--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.
|
||||
|
||||
--ahead-behind::
|
||||
--no-ahead-behind::
|
||||
Display or do not display detailed ahead/behind counts for the
|
||||
branch relative to its upstream branch. Defaults to true.
|
||||
|
||||
--renames::
|
||||
--no-renames::
|
||||
Turn on/off rename detection regardless of user configuration.
|
||||
See also linkgit:git-diff[1] `--no-renames`.
|
||||
|
||||
--find-renames[=<n>]::
|
||||
Turn on rename detection, optionally setting the similarity
|
||||
threshold.
|
||||
See also linkgit:git-diff[1] `--find-renames`.
|
||||
|
||||
<pathspec>...::
|
||||
See the 'pathspec' entry in linkgit:gitglossary[7].
|
||||
|
||||
OUTPUT
|
||||
------
|
||||
The output from this command is designed to be used as a commit
|
||||
template comment.
|
||||
The default, long format, is designed to be human readable,
|
||||
verbose and descriptive. Its contents and format are subject to change
|
||||
at any time.
|
||||
|
||||
The paths mentioned in the output, unlike many other Git commands, are
|
||||
made relative to the current directory if you are working in a
|
||||
subdirectory (this is on purpose, to help cutting and pasting). See
|
||||
the status.relativePaths config option below.
|
||||
|
||||
Short Format
|
||||
~~~~~~~~~~~~
|
||||
|
||||
In the short-format, the status of each path is shown as one of these
|
||||
forms
|
||||
|
||||
XY PATH
|
||||
XY ORIG_PATH -> PATH
|
||||
|
||||
where `ORIG_PATH` is where the renamed/copied contents came
|
||||
from. `ORIG_PATH` is only shown when the entry is renamed or
|
||||
copied. 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.
|
||||
|
||||
There are three different types of states that are shown using this format, and
|
||||
each one uses the `XY` syntax differently:
|
||||
|
||||
* When a merge is occurring and the merge was successful, or outside of a merge
|
||||
situation, `X` shows the status of the index and `Y` shows the status of the
|
||||
working tree.
|
||||
* When a merge conflict has occurred and has not yet been resolved, `X` and `Y`
|
||||
show the state introduced by each head of the merge, relative to the common
|
||||
ancestor. These paths are said to be _unmerged_.
|
||||
* When a path is untracked, `X` and `Y` are always the same, since they are
|
||||
unknown to the index. `??` is used for untracked paths. Ignored files are
|
||||
not listed unless `--ignored` is used; if it is, ignored files are indicated
|
||||
by `!!`.
|
||||
|
||||
Note that the term _merge_ here also includes rebases using the default
|
||||
`--merge` strategy, cherry-picks, and anything else using the merge machinery.
|
||||
|
||||
In the following table, these three classes are shown in separate sections, and
|
||||
these characters are used for `X` and `Y` fields for the first two sections that
|
||||
show tracked paths:
|
||||
|
||||
* ' ' = unmodified
|
||||
* 'M' = modified
|
||||
* 'T' = file type changed (regular file, symbolic link or submodule)
|
||||
* 'A' = added
|
||||
* 'D' = deleted
|
||||
* 'R' = renamed
|
||||
* 'C' = copied (if config option status.renames is set to "copies")
|
||||
* 'U' = updated but unmerged
|
||||
|
||||
....
|
||||
X Y Meaning
|
||||
-------------------------------------------------
|
||||
[AMD] not updated
|
||||
M [ MTD] updated in index
|
||||
T [ MTD] type changed in index
|
||||
A [ MTD] added to index
|
||||
D deleted from index
|
||||
R [ MTD] renamed in index
|
||||
C [ MTD] copied in index
|
||||
[MTARC] index and work tree matches
|
||||
[ MTARC] M work tree changed since index
|
||||
[ MTARC] T type changed in work tree since index
|
||||
[ MTARC] D deleted in work tree
|
||||
R renamed in work tree
|
||||
C copied 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
|
||||
! ! ignored
|
||||
-------------------------------------------------
|
||||
....
|
||||
|
||||
Submodules have more state and instead report
|
||||
|
||||
* 'M' = the submodule has a different HEAD than recorded in the index
|
||||
* 'm' = the submodule has modified content
|
||||
* '?' = the submodule has untracked files
|
||||
|
||||
This is since modified content or untracked files in a submodule cannot be added
|
||||
via `git add` in the superproject to prepare a commit.
|
||||
|
||||
'm' and '?' are applied recursively. For example if a nested submodule
|
||||
in a submodule contains an untracked file, this is reported as '?' as well.
|
||||
|
||||
If -b is used the short-format status is preceded by a line
|
||||
|
||||
## branchname tracking info
|
||||
|
||||
Porcelain Format Version 1
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Version 1 porcelain format is similar to the short format, but is guaranteed
|
||||
not to change in a backwards-incompatible way between Git versions or
|
||||
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
|
||||
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.
|
||||
|
||||
Any submodule changes are reported as modified `M` instead of `m` or single `?`.
|
||||
|
||||
Porcelain Format Version 2
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Version 2 format adds more detailed information about the state of
|
||||
the worktree and changed items. Version 2 also defines an extensible
|
||||
set of easy to parse optional headers.
|
||||
|
||||
Header lines start with "#" and are added in response to specific
|
||||
command line arguments. Parsers should ignore headers they
|
||||
don't recognize.
|
||||
|
||||
Branch Headers
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
If `--branch` is given, a series of header lines are printed with
|
||||
information about the current branch.
|
||||
|
||||
....
|
||||
Line Notes
|
||||
------------------------------------------------------------
|
||||
# branch.oid <commit> | (initial) Current commit.
|
||||
# branch.head <branch> | (detached) Current branch.
|
||||
# branch.upstream <upstream-branch> If upstream is set.
|
||||
# branch.ab +<ahead> -<behind> If upstream is set and
|
||||
the commit is present.
|
||||
------------------------------------------------------------
|
||||
....
|
||||
|
||||
Stash Information
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
If `--show-stash` is given, one line is printed showing the number of stash
|
||||
entries if non-zero:
|
||||
|
||||
# stash <N>
|
||||
|
||||
Changed Tracked Entries
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Following the headers, a series of lines are printed for tracked
|
||||
entries. One 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 will be
|
||||
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.
|
||||
|
||||
BACKGROUND REFRESH
|
||||
------------------
|
||||
|
||||
By default, `git status` will automatically refresh the index, updating
|
||||
the cached stat information from the working tree and writing out the
|
||||
result. Writing out the updated index is an optimization that isn't
|
||||
strictly necessary (`status` computes the values for itself, but writing
|
||||
them out is just to save subsequent programs from repeating our
|
||||
computation). When `status` is run in the background, the lock held
|
||||
during the write may conflict with other simultaneous processes, causing
|
||||
them to fail. Scripts running `status` in the background should consider
|
||||
using `git --no-optional-locks status` (see linkgit:git[1] for details).
|
||||
|
||||
UNTRACKED FILES AND PERFORMANCE
|
||||
-------------------------------
|
||||
|
||||
`git status` can be very slow in large worktrees if/when it
|
||||
needs to search for untracked files and directories. There are
|
||||
many configuration options available to speed this up by either
|
||||
avoiding the work or making use of cached results from previous
|
||||
Git commands. There is no single optimum set of settings right
|
||||
for everyone. We'll list a summary of the relevant options to help
|
||||
you, but before going into the list, you may want to run `git status`
|
||||
again, because your configuration may already be caching `git status`
|
||||
results, so it could be faster on subsequent runs.
|
||||
|
||||
* The `--untracked-files=no` flag or the
|
||||
`status.showUntrackedFiles=no` config (see above for both):
|
||||
indicate that `git status` should not report untracked
|
||||
files. This is the fastest option. `git status` will not list
|
||||
the untracked files, so you need to be careful to remember if
|
||||
you create any new files and manually `git add` them.
|
||||
|
||||
* `advice.statusUoption=false` (see linkgit:git-config[1]):
|
||||
setting this variable to `false` disables the warning message
|
||||
given when enumerating untracked files takes more than 2
|
||||
seconds. In a large project, it may take longer and the user
|
||||
may have already accepted the trade off (e.g. using "-uno" may
|
||||
not be an acceptable option for the user), in which case, there
|
||||
is no point issuing the warning message, and in such a case,
|
||||
disabling the warning may be the best.
|
||||
|
||||
* `core.untrackedCache=true` (see linkgit:git-update-index[1]):
|
||||
enable the untracked cache feature and only search directories
|
||||
that have been modified since the previous `git status` command.
|
||||
Git remembers the set of untracked files within each directory
|
||||
and assumes that if a directory has not been modified, then
|
||||
the set of untracked files within has not changed. This is much
|
||||
faster than enumerating the contents of every directory, but still
|
||||
not without cost, because Git still has to search for the set of
|
||||
modified directories. The untracked cache is stored in the
|
||||
`.git/index` file. The reduced cost of searching for untracked
|
||||
files is offset slightly by the increased size of the index and
|
||||
the cost of keeping it up-to-date. That reduced search time is
|
||||
usually worth the additional size.
|
||||
|
||||
* `core.untrackedCache=true` and `core.fsmonitor=true` or
|
||||
`core.fsmonitor=<hook-command-pathname>` (see
|
||||
linkgit:git-update-index[1]): enable both the untracked cache
|
||||
and FSMonitor features and only search directories that have
|
||||
been modified since the previous `git status` command. This
|
||||
is faster than using just the untracked cache alone because
|
||||
Git can also avoid searching for modified directories. Git
|
||||
only has to enumerate the exact set of directories that have
|
||||
changed recently. While the FSMonitor feature can be enabled
|
||||
without the untracked cache, the benefits are greatly reduced
|
||||
in that case.
|
||||
|
||||
Note that after you turn on the untracked cache and/or FSMonitor
|
||||
features it may take a few `git status` commands for the various
|
||||
caches to warm up before you see improved command times. This is
|
||||
normal.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gitignore[5]
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
Reference in New Issue
Block a user