git-status手册页
NAME名称
git-status - 显示工作树的状态
SYNOPSIS概要
git status [<选项> ...] [ - ] [<pathspec>...]
DESCRIPTION描述
显示索引文件和当前HEAD提交之间存在差异的路径,工作树和索引文件之间存在差异的路径以及工作树中未由Git跟踪的路径(并且不会被gitignore(5)忽略) )。首先是你将通过跑步来实现的目标git commit; 第二个和第三个是你可以通过在运行之前运行 git add 来提交的git commit。
OPTIONS选项
-s
- short
以短格式输出。
-b
- branch
甚至以短格式显示分支和跟踪信息。
- porcelain
为脚本提供易于解析的格式输出。这与短输出类似,但在Git版本中保持稳定,并且不管用户配置如何。详情请参阅下文。
- long
以长格式输出输出。这是默认设置。
-v
--verbose
除了已更改的文件名称之外,还会显示正在执行的文本更改(即与输出一样git diff --cached)。如果-v指定了两次,那么还会显示尚未上演的工作树中的更改(即与输出一样git diff)。
-u [<mode>]
--untracked-files[= <mode>]
显示未跟踪的文件。
mode参数用于指定未跟踪文件的处理。它是可选的:它默认为全部,如果指定,它必须坚持选项(例如-uno,但不是-u no)。
可能的选项是:
· no - 不显示未跟踪的文件。
· normal - 显示未跟踪的文件和目录。
· all - 还显示未跟踪目录中的单个文件。
如果-u不使用选项,则会显示未跟踪的文件和目录(即与指定相同normal),以帮助您避免忘记添加新创建的文件。由于需要额外的工作才能在文件系统中查找未跟踪的文件,因此在大型工作树中,此模式可能需要一些时间。考虑启用未跟踪缓存和分离指标如果支持的话(见 gitupdate-index --untracked-cache和git update-index --split-index),否则,你可以使用no有git status 回报更快,而不显示未跟踪文件。
可以使用git-config(1)中记录的status.showUntrackedFiles配置变量来更改默认值。
-- ignore-submodules[= <when>]
查找更改时忽略对子模块的更改。<when>可以是“none”,“untracked”,“dirty”或“all”,这是默认设置。如果子模块包含未跟踪或已修改的文件,或者其HEAD与超级项目中记录的提交不同,并且可用于覆盖git-config(1)或gitmodules中ignore选项的任何设置,则使用“none” (5)。当使用“未跟踪”时,如果子模块仅包含未跟踪内容(但仍然针对修改内容进行扫描),则子模块不会被视为脏。使用“dirty”忽略对子模块工作树的所有更改,只显示存储在超级项目中的提交更改(这是1.7.0之前的行为)。使用“all”隐藏对子模块的所有更改(并在status.submoduleSummary设置了配置选项时禁止输出子模块摘要 )。
--ignored
也显示忽略的文件。
-z
用NUL而不是LF终止输入。--porcelain如果没有给出其他格式,这意味着输出格式。
--column [=<options>]
--no-column
在列中显示未跟踪的文件。有关选项语法,请参阅配置变量column.status。--column与--no-column 不带选项相当于总是和永不 分别。
OUTPUT输出
此命令的输出旨在用作提交模板注释。默认的长格式设计为人类可读,详细和描述性的。其内容和格式随时可能更改。
输出中提到的路径与其他许多Git命令不同,它是相对于当前目录而言的,如果您在子目录中工作(这是为了帮助剪切和粘贴)。请参阅下面的status.relativePaths配置选项。
Short Format短格式
在短格式中,每条路径的状态显示为
XY PATH1 - > PATH2
其中PATH1是路径HEAD,而“ -> PATH2”部分仅在PATH1对应于索引/工作树中的不同路径(即文件被重命名)时才显示。这XY是一个双字母状态码。
字段(包括->)由一个空格相互分隔。如果文件名包含空格或其他非打印字符,则该字段将以C字符串文字的方式引用:由ASCII双引号(34)字符包围,并且内部特殊字符反斜线转义。
对于具有合并冲突的路径,X并Y显示合并每一侧的修改状态。对于没有合并冲突的路径,X显示索引Y的状态,并显示工作树的状态。对于未跟踪的路径,XY是??。其他状态代码可以解释如下:
· ''=未修改
· M =修改
· A =已添加
· D =删除
· R =重命名
· C =复制
· U =更新但未被合并
被忽略的文件未列出,除非--ignored选项生效,在这种情况下XY是!!。
XY含义
-------------------------------------------------
[MD]未更新
M [MD]在索引中更新
一个[MD]添加到索引
D [M]从索引中删除
R [MD]在索引中重命名
C [MD]复制到索引中
[MARC]索引和工作树匹配
[MARC] M工作树自索引以来发生了变化
[MARC] D在工作树中被删除
-------------------------------------------------
DD未合并,均被删除
AU未加入,由我们添加
UD未被合并,被他们删除
UA未合并,由他们添加
杜未被合并,被我们删除
AA没有参加,都补充说
UU未合并,均已修改
-------------------------------------------------
??未经跟踪
!!忽视
-------------------------------------------------
如果使用-b,则短格式状态前面有一行
branchname tracking info追踪信息
Porcelain Format瓷格式
瓷器格式与短格式类似,但保证不会在Git版本之间或基于用户配置的后向不兼容方式中更改。这使它成为脚本解析的理想选择。上面短格式的描述也描述了瓷器格式,但有一些例外:
1. 用户的color.status配置不受尊重; 颜色将始终关闭。
2. 用户的status.relativePaths配置不受尊重; 显示的路径将始终与存储库根目录相关。
还有一种推荐用于机器解析的备用-z格式。在这种格式下,状态字段是相同的,但其他一些事情会改变。首先,将- >选自重命名项省略和场顺序被颠倒(例如从- >到变为从)。其次,NUL(ASCII 0)跟在每个文件名后面,将空格替换为字段分隔符和终止换行符(但空格仍将状态字段与第一个文件名隔开)。第三,包含特殊字符的文件名不是专门格式化的; 不执行引用或反斜杠转义。
CONFIGURATION组态
该命令荣誉color.status(或status.color - 他们意味着相同的事情,后者保持向后兼容性)和color.status.<slot>配置变量来着色其输出。
如果config变量status.relativePaths设置为false,则显示的所有路径都是相对于存储库根目录而不是当前目录。
如果status.submoduleSummary设置为非零数字或true(与-1或无限制数字相同),则将为长格式启用子模块摘要,并显示修改子模块的提交摘要(请参阅--summary-limit选项的GIT-子模块(1))。请注意,对于所有子模块,状态命令的摘要输出将被diff.ignoreSubmodules设置为全部或仅限其中的子模块submodule.<name>.ignore=all。要查看忽略子模块的摘要,可以使用--ignore-submodules = dirty命令行选项或git submodule summary命令,该命令显示类似的输出,但不遵守这些设置。