/usr/share/doc/git
NameSizeModeActions
contrib/-0755rm
howto/-0755rm
RelNotes/-0755rm
technical/-0755rm
blame-options.txt60010644editdlrm
cmds-ancillaryinterrogators.txt12940644editdlrm
cmds-ancillarymanipulators.txt7460644editdlrm
cmds-developerinterfaces.txt6780644editdlrm
cmds-foreignscminterface.txt3990644editdlrm
cmds-guide.txt8330644editdlrm
cmds-mainporcelain.txt30330644editdlrm
cmds-plumbinginterrogators.txt15390644editdlrm
cmds-plumbingmanipulators.txt14100644editdlrm
cmds-purehelpers.txt12680644editdlrm
cmds-synchelpers.txt4490644editdlrm
cmds-synchingrepositories.txt3970644editdlrm
cmds-userinterfaces.txt5070644editdlrm
CODE_OF_CONDUCT.md59890644editdlrm
config.txt180010644editdlrm
date-formats.txt11720644editdlrm
diff-format.txt65730644editdlrm
diff-generate-patch.txt72530644editdlrm
diff-options.txt324360644editdlrm
docbook-xsl.css45570644editdlrm
everyday.html169960644editdlrm
fetch-options.txt122810644editdlrm
fsck-msgids.txt41970644editdlrm
git-add.html403690644editdlrm
git-add.txt161640644editdlrm
git-am.html331610644editdlrm
git-am.txt93170644editdlrm
git-annotate.html283910644editdlrm
git-annotate.txt7710644editdlrm
git-apply.html334070644editdlrm
git-apply.txt109500644editdlrm
git-archive.html298560644editdlrm
git-archive.txt84910644editdlrm
git-bisect-lk2009.html812430644editdlrm
git-bisect-lk2009.txt496940644editdlrm
git-bisect.html405720644editdlrm
git-bisect.txt179050644editdlrm
git-blame.html425010644editdlrm
git-blame.txt87320644editdlrm
git-branch.html482530644editdlrm
git-branch.txt157480644editdlrm
git-bugreport.html205090644editdlrm
git-bugreport.txt24210644editdlrm
git-bundle.html332690644editdlrm
git-bundle.txt117030644editdlrm
git-cat-file.html386610644editdlrm
git-cat-file.txt136150644editdlrm
git-check-attr.html226330644editdlrm
git-check-attr.txt33900644editdlrm
git-check-ignore.html231350644editdlrm
git-check-ignore.txt41560644editdlrm
git-check-mailmap.html188160644editdlrm
git-check-mailmap.txt11080644editdlrm
git-check-ref-format.html240400644editdlrm
git-check-ref-format.txt50340644editdlrm
git-checkout-index.html253620644editdlrm
git-checkout-index.txt56690644editdlrm
git-checkout.html527190644editdlrm
git-checkout.txt223620644editdlrm
git-cherry-pick.html310650644editdlrm
git-cherry-pick.txt87640644editdlrm
git-cherry.html224230644editdlrm
git-cherry.txt36150644editdlrm
git-clean.html239810644editdlrm
git-clean.txt45230644editdlrm
git-clone.html443280644editdlrm
git-clone.txt147720644editdlrm
git-column.html233170644editdlrm
git-column.txt22010644editdlrm
git-commit-graph.html261470644editdlrm
git-commit-graph.txt59490644editdlrm
git-commit-tree.html266830644editdlrm
git-commit-tree.txt27100644editdlrm
git-commit.html571540644editdlrm
git-commit.txt215750644editdlrm
git-config.html4155400644editdlrm
git-config.txt197550644editdlrm
git-contacts.html207180644editdlrm
git-contacts.txt25840644editdlrm
git-count-objects.html189460644editdlrm
git-count-objects.txt13500644editdlrm
git-credential-cache--daemon.html181820644editdlrm
git-credential-cache--daemon.txt8910644editdlrm
git-credential-cache.html201800644editdlrm
git-credential-cache.txt24840644editdlrm
git-credential-store.html220430644editdlrm
git-credential-store.txt36370644editdlrm
git-credential.html266760644editdlrm
git-credential.txt73270644editdlrm
git-describe.html282680644editdlrm
git-describe.txt83190644editdlrm
git-diagnose.html201570644editdlrm
git-diagnose.txt22080644editdlrm
git-diff-files.html791300644editdlrm
git-diff-files.txt12250644editdlrm
git-diff-index.html843510644editdlrm
git-diff-index.txt48110644editdlrm
git-diff-tree.html1160520644editdlrm
git-diff-tree.txt41840644editdlrm
git-diff.html1070930644editdlrm
git-diff.txt80390644editdlrm
git-difftool.html270480644editdlrm
git-difftool.txt46240644editdlrm
git-fast-export.html316500644editdlrm
git-fast-export.txt112820644editdlrm
git-fast-import.html1032830644editdlrm
git-fast-import.txt599630644editdlrm
git-fetch-pack.html232550644editdlrm
git-fetch-pack.txt42480644editdlrm
git-fetch.html754560644editdlrm
git-fetch.txt118120644editdlrm
git-filter-branch.html546480644editdlrm
git-filter-branch.txt310310644editdlrm
git-fmt-merge-msg.html214350644editdlrm
git-fmt-merge-msg.txt19310644editdlrm
git-for-each-ref.html434380644editdlrm
git-for-each-ref.txt170730644editdlrm
git-for-each-repo.html192960644editdlrm
git-for-each-repo.txt15430644editdlrm
git-format-patch.html818420644editdlrm
git-format-patch.txt288760644editdlrm
git-fsck-objects.html173920644editdlrm
git-fsck-objects.txt3540644editdlrm
git-fsck.html391620644editdlrm
git-fsck.txt58820644editdlrm
git-fsmonitor--daemon.html228750644editdlrm
git-fsmonitor--daemon.txt36100644editdlrm
git-gc.html366970644editdlrm
git-gc.txt62920644editdlrm
git-get-tar-commit-id.html178350644editdlrm
git-get-tar-commit-id.txt7530644editdlrm
git-grep.html360300644editdlrm
git-grep.txt107630644editdlrm
git-hash-object.html199390644editdlrm
git-hash-object.txt21420644editdlrm
git-help.html281410644editdlrm
git-help.txt75270644editdlrm
git-hook.html188070644editdlrm
git-hook.txt10280644editdlrm
git-http-backend.html309740644editdlrm
git-http-backend.txt114720644editdlrm
git-http-fetch.html196790644editdlrm
git-http-fetch.txt17750644editdlrm
git-http-push.html213910644editdlrm
git-http-push.txt29950644editdlrm
git-imap-send.html254720644editdlrm
git-imap-send.txt35670644editdlrm
git-index-pack.html247350644editdlrm
git-index-pack.txt52050644editdlrm
git-init-db.html174600644editdlrm
git-init-db.txt4090644editdlrm
git-init.html266040644editdlrm
git-init.txt58690644editdlrm
git-interpret-trailers.html420060644editdlrm
git-interpret-trailers.txt185790644editdlrm
git-log.html1824850644editdlrm
git-log.txt68640644editdlrm
git-ls-files.html350530644editdlrm
git-ls-files.txt116220644editdlrm
git-ls-remote.html243490644editdlrm
git-ls-remote.txt48410644editdlrm
git-ls-tree.html256280644editdlrm
git-ls-tree.txt55150644editdlrm
git-mailinfo.html234020644editdlrm
git-mailinfo.txt38660644editdlrm
git-mailsplit.html192640644editdlrm
git-mailsplit.txt13420644editdlrm
git-maintenance.html460000644editdlrm
git-maintenance.txt189010644editdlrm
git-merge-base.html283800644editdlrm
git-merge-base.txt77590644editdlrm
git-merge-file.html226560644editdlrm
git-merge-file.txt37180644editdlrm
git-merge-index.html204500644editdlrm
git-merge-index.txt24450644editdlrm
git-merge-one-file.html174160644editdlrm
git-merge-one-file.txt3870644editdlrm
git-merge-tree.html334960644editdlrm
git-merge-tree.txt119230644editdlrm
git-merge.html710050644editdlrm
git-merge.txt150680644editdlrm
git-mergetool--lib.html191270644editdlrm
git-mergetool--lib.txt14670644editdlrm
git-mergetool.html397950644editdlrm
git-mergetool.txt44730644editdlrm
git-mktag.html198190644editdlrm
git-mktag.txt17820644editdlrm
git-mktree.html184740644editdlrm
git-mktree.txt10750644editdlrm
git-multi-pack-index.html235950644editdlrm
git-multi-pack-index.txt46320644editdlrm
git-mv.html200920644editdlrm
git-mv.txt21030644editdlrm
git-name-rev.html216700644editdlrm
git-name-rev.txt33520644editdlrm
git-notes.html410460644editdlrm
git-notes.txt138660644editdlrm
git-pack-objects.html423910644editdlrm
git-pack-objects.txt192970644editdlrm
git-pack-redundant.html197990644editdlrm
git-pack-redundant.txt18760644editdlrm
git-pack-refs.html211200644editdlrm
git-pack-refs.txt31360644editdlrm
git-patch-id.html203540644editdlrm
git-patch-id.txt24300644editdlrm
git-prune-packed.html185390644editdlrm
git-prune-packed.txt9460644editdlrm
git-prune.html203270644editdlrm
git-prune.txt19190644editdlrm
git-pull.html770700644editdlrm
git-pull.txt83540644editdlrm
git-push.html749930644editdlrm
git-push.txt280610644editdlrm
git-quiltimport.html194660644editdlrm
git-quiltimport.txt16930644editdlrm
git-range-diff.html316730644editdlrm
git-range-diff.txt103370644editdlrm
git-read-tree.html390780644editdlrm
git-read-tree.txt168970644editdlrm
git-rebase.html989450644editdlrm
git-rebase.txt472280644editdlrm
git-receive-pack.html304480644editdlrm
git-receive-pack.txt95260644editdlrm
git-reflog.html235140644editdlrm
git-reflog.txt45750644editdlrm
git-remote-ext.html230120644editdlrm
git-remote-ext.txt39770644editdlrm
git-remote-fd.html195010644editdlrm
git-remote-fd.txt16280644editdlrm
git-remote-helpers.html169740644editdlrm
git-remote.html299030644editdlrm
git-remote.txt87680644editdlrm
git-repack.html328190644editdlrm
git-repack.txt110200644editdlrm
git-replace.html248580644editdlrm
git-replace.txt52110644editdlrm
git-request-pull.html202950644editdlrm
git-request-pull.txt20350644editdlrm
git-rerere.html270400644editdlrm
git-rerere.txt77810644editdlrm
git-reset.html445200644editdlrm
git-reset.txt191250644editdlrm
git-restore.html281660644editdlrm
git-restore.txt70820644editdlrm
git-rev-list.html1181280644editdlrm
git-rev-list.txt32200644editdlrm
git-rev-parse.html646410644editdlrm
git-rev-parse.txt158400644editdlrm
git-revert.html267920644editdlrm
git-revert.txt54210644editdlrm
git-rm.html275840644editdlrm
git-rm.txt72360644editdlrm
git-send-pack.html245760644editdlrm
git-send-pack.txt51600644editdlrm
git-sh-i18n--envsubst.html181660644editdlrm
git-sh-i18n--envsubst.txt9280644editdlrm
git-sh-i18n.html185950644editdlrm
git-sh-i18n.txt11470644editdlrm
git-sh-setup.html212770644editdlrm
git-sh-setup.txt29760644editdlrm
git-shell.html214140644editdlrm
git-shell.txt29810644editdlrm
git-shortlog.html646180644editdlrm
git-shortlog.txt44090644editdlrm
git-show-branch.html268130644editdlrm
git-show-branch.txt65890644editdlrm
git-show-index.html195210644editdlrm
git-show-index.txt14730644editdlrm
git-show-ref.html260750644editdlrm
git-show-ref.txt66480644editdlrm
git-show.html1116440644editdlrm
git-show.txt19290644editdlrm
git-sparse-checkout.html439490644editdlrm
git-sparse-checkout.txt212580644editdlrm
git-stage.html173410644editdlrm
git-stage.txt2990644editdlrm
git-stash.html385940644editdlrm
git-stash.txt149990644editdlrm
git-status.html457180644editdlrm
git-status.txt202950644editdlrm
git-stripspace.html200160644editdlrm
git-stripspace.txt19460644editdlrm
git-submodule.html455810644editdlrm
git-submodule.txt208190644editdlrm
git-subtree.html368230644editdlrm
git-subtree.txt136870644editdlrm
git-switch.html333140644editdlrm
git-switch.txt86070644editdlrm
git-symbolic-ref.html204520644editdlrm
git-symbolic-ref.txt23270644editdlrm
git-tag.html389580644editdlrm
git-tag.txt134690644editdlrm
git-tools.html172070644editdlrm
git-tools.txt4220644editdlrm
git-unpack-file.html176450644editdlrm
git-unpack-file.txt4340644editdlrm
git-unpack-objects.html188110644editdlrm
git-unpack-objects.txt12200644editdlrm
git-update-index.html497230644editdlrm
git-update-index.txt239280644editdlrm
git-update-ref.html259090644editdlrm
git-update-ref.txt62980644editdlrm
git-update-server-info.html182550644editdlrm
git-update-server-info.txt8010644editdlrm
git-upload-archive.html197760644editdlrm
git-upload-archive.txt20870644editdlrm
git-upload-pack.html216710644editdlrm
git-upload-pack.txt29980644editdlrm
git-var.html215370644editdlrm
git-var.txt31760644editdlrm
git-verify-commit.html179480644editdlrm
git-verify-commit.txt5750644editdlrm
git-verify-pack.html189530644editdlrm
git-verify-pack.txt11110644editdlrm
git-verify-tag.html179410644editdlrm
git-verify-tag.txt5620644editdlrm
git-version.html177980644editdlrm
git-version.txt5320644editdlrm
git-web--browse.html224050644editdlrm
git-web--browse.txt35760644editdlrm
git-whatchanged.html185720644editdlrm
git-whatchanged.txt10980644editdlrm
git-worktree.html463410644editdlrm
git-worktree.txt209850644editdlrm
git-write-tree.html184410644editdlrm
git-write-tree.txt10260644editdlrm
git.html1072370644editdlrm
git.txt432540644editdlrm
gitattributes.html828450644editdlrm
gitattributes.txt495110644editdlrm
gitcli.html295840644editdlrm
gitcli.txt96970644editdlrm
gitcore-tutorial.html1001390644editdlrm
gitcore-tutorial.txt622400644editdlrm
gitcredentials.html319800644editdlrm
gitcredentials.txt113170644editdlrm
gitdiffcore.html337450644editdlrm
gitdiffcore.txt140820644editdlrm
giteveryday.html380920644editdlrm
giteveryday.txt144220644editdlrm
gitfaq.html440810644editdlrm
gitfaq.txt210690644editdlrm
gitformat-bundle.html214460644editdlrm
gitformat-bundle.txt32560644editdlrm
gitformat-chunk.html243290644editdlrm
gitformat-chunk.txt55600644editdlrm
gitformat-commit-graph.html286300644editdlrm
gitformat-commit-graph.txt78570644editdlrm
gitformat-index.html402690644editdlrm
gitformat-index.txt151800644editdlrm
gitformat-pack.html498110644editdlrm
gitformat-pack.txt235090644editdlrm
gitformat-signature.html273620644editdlrm
gitformat-signature.txt80930644editdlrm
gitglossary.html642010644editdlrm
gitglossary.txt3580644editdlrm
githooks.html565000644editdlrm
githooks.txt293310644editdlrm
gitignore.html283990644editdlrm
gitignore.txt89180644editdlrm
gitmailmap.html228190644editdlrm
gitmailmap.txt35510644editdlrm
gitmodules.html240570644editdlrm
gitmodules.txt48000644editdlrm
gitnamespaces.html221480644editdlrm
gitnamespaces.txt25090644editdlrm
gitprotocol-capabilities.html374250644editdlrm
gitprotocol-capabilities.txt153110644editdlrm
gitprotocol-common.html215650644editdlrm
gitprotocol-common.txt31770644editdlrm
gitprotocol-http.html432340644editdlrm
gitprotocol-http.txt179940644editdlrm
gitprotocol-pack.html530230644editdlrm
gitprotocol-pack.txt276780644editdlrm
gitprotocol-v2.html596900644editdlrm
gitprotocol-v2.txt314340644editdlrm
gitremote-helpers.html482150644editdlrm
gitremote-helpers.txt217850644editdlrm
gitrepository-layout.html393520644editdlrm
gitrepository-layout.txt116220644editdlrm
gitrevisions.html416210644editdlrm
gitrevisions.txt8230644editdlrm
gitsubmodules.html316990644editdlrm
gitsubmodules.txt103660644editdlrm
gittutorial-2.html345470644editdlrm
gittutorial-2.txt147500644editdlrm
gittutorial.html462630644editdlrm
gittutorial.txt229720644editdlrm
gitworkflows.html398690644editdlrm
gitworkflows.txt174140644editdlrm
glossary-content.txt326090644editdlrm
howto-index.html229910644editdlrm
howto-index.txt40010644editdlrm
i18n.txt29400644editdlrm
line-range-format.txt11620644editdlrm
line-range-options.txt7610644editdlrm
merge-options.txt72360644editdlrm
merge-strategies.txt66100644editdlrm
mergetools-diff.txt15070644editdlrm
mergetools-merge.txt25860644editdlrm
MyFirstContribution.html905720644editdlrm
MyFirstContribution.txt545960644editdlrm
MyFirstObjectWalk.html605540644editdlrm
MyFirstObjectWalk.txt289790644editdlrm
object-format-disclaimer.txt4700644editdlrm
pretty-formats.txt156690644editdlrm
pretty-options.txt42010644editdlrm
pull-fetch-param.txt54760644editdlrm
README.md36520644editdlrm
ref-reachability-filters.txt3910644editdlrm
rerere-options.txt4140644editdlrm
rev-list-description.txt25310644editdlrm
rev-list-options.txt469060644editdlrm
ReviewingGuidelines.html268310644editdlrm
ReviewingGuidelines.txt81000644editdlrm
revisions.txt171090644editdlrm
scalar.html260550644editdlrm
scalar.txt60560644editdlrm
sequencer.txt4720644editdlrm
signoff-option.txt7810644editdlrm
SubmittingPatches.html556600644editdlrm
SubmittingPatches.txt301470644editdlrm
ToolsForGit.html190200644editdlrm
ToolsForGit.txt13480644editdlrm
trace2-target-values.txt5290644editdlrm
transfer-data-leaks.txt17120644editdlrm
urls-remotes.txt26420644editdlrm
urls.txt36340644editdlrm
user-manual.html2757310644editdlrm
user-manual.txt1735180644editdlrm
Edit: /usr/share/doc/git/git-status.txt (20295B)
git-status(1) ============= NAME ---- git-status - Show the working tree status SYNOPSIS -------- [verse] 'git status' [] [--] [...] 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[=]:: 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[]:: --untracked-files[=]:: 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. The default can be changed using the status.showUntrackedFiles configuration variable documented in linkgit:git-config[1]. -- --ignore-submodules[=]:: Ignore changes to submodules when looking for changes. 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[=]:: 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[=]:: --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[=]:: Turn on rename detection, optionally setting the similarity threshold. See also linkgit:git-diff[1] `--find-renames`. ...:: 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 | (initial) Current commit. # branch.head | (detached) Current branch. # branch.upstream If upstream is set. # branch.ab + - 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 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 Renamed or copied entries have the following format: 2 .... Field Meaning -------------------------------------------------------- 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. A 4 character field describing the submodule state. "N..." when the entry is not a submodule. "S" when the entry is a submodule. is "C" if the commit changed; otherwise ".". is "M" if it has tracked changes; otherwise ".". is "U" if there are untracked changes; otherwise ".". The octal file mode in HEAD. The octal file mode in the index. The octal file mode in the worktree. The object name in HEAD. The object name in the index. 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". The pathname. In a renamed/copied entry, this is the target path. 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. 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

.... Field Meaning -------------------------------------------------------- A 2 character field describing the conflict type as described in the short format. A 4 character field describing the submodule state as described above. The octal file mode in stage 1. The octal file mode in stage 2. The octal file mode in stage 3. The octal file mode in the worktree.

The object name in stage 1.

The object name in stage 2.

The object name in stage 3. 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: ? Ignored items have the following format: ! 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.` 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..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=false` 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=` (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