使用git status 显示工作树的状态
1 git status 概要
git status [<options>...] [--] [<pathspec>...]
显示索引中内容和HEAD的差异,工作树和索引文件的差异,工作树中没有被Git忽略的未跟踪文件。
-
[-s, --short]
以简短格式显示:
-
[-b, --branch]
显示分支信息:
-
[--show-stash]
显示当前暂存的条目数量。 -
[--porcelain[=<version>]]
为脚本提供易于解析的格式,version
用于指定格式版本,默认是原始版本v1格式。 -
[--long]
长输出格式,这是默认的。 -
[-v, --verbose]
除了显示更改的文件名外,对于索引中的内容还会显示文本内容的更改,如果v
被指定了两次(-vv
),则还会显示未添加到索引中文件的更改。 -
[-u[<mode>], --untracked-files[=<mode>]]
显示未跟踪的文件。
<mode>
用于指定如何处理未跟踪的文件,如果使用了此选项则默认是all
,下面是可能的选项:no
- 显示未跟踪文件。normal
- 显示未跟踪文件和目录。all
- 也显示未跟踪目录中的单个文件。
当没有使用
-u
选项时,未跟踪文件和目录被现实和normal
模式相同。
可以使用配置变量status.showUntrackedFiles
来改变默认的<mode>
。 -
[--ignore-submodules[=<when>]]
当查看更改时,忽略子模块的更改,<when>
可以是"none"
,"untracked"
,"dirty"
或者"all"
,all
是默认值。
当子模块包含未跟踪或被修改文件时,或者它的HEAD
与superproject
中记录的commit
不同时,使用"none"
将会认为子模块被修改了。
使用"untracked"
时,当子模块只包含未跟踪内容时,他们不会被认为是脏模块。
使用"dirty"
忽略所有对子模块工作树的修改,只显示对存储在superproject
中的提交的更改。
使用"all"
隐藏对子模块的所有更改。
可通过配置变量status.submoduleSummary
修改默认模式。 -
[--ignored[=<mode>]]
也展示忽略文件。
同子模块一样,此选项被使用默认是traditional
模式。traditional
- 显示忽略文件和目录。除非--untracked-files=all
被指定,在这种情况下将显示被忽略目录中的单个文件。no
- 不展示忽略文件。matching
- 显示匹配到的忽略文件通过pattern
。
当使用
matching
模式时,将显示被忽略模式显示匹配的路径,如果匹配忽略模式,则会显示该模式但不会显示被忽略目录中的内容。如果目录不匹配忽略模式,但是又有被忽略的内容,则目录不会显示,被忽略的内容会被显示。 -
[-z]
使用NUL字符中止,而不是LF。 -
[--column[=<options>], --no-column]
显示未跟踪的文件在列表中。语法看配置变量column.status
。当未指定参数时,--column
等于always
,--no-column
等于never
。 -
[--ahead-behind, --no-ahead-behind]
显示或者不显示分支相对于上游分支的详细前/后记数。默认为true。 -
[--renames, --no-renames]
不管用户如何配置,打开/关闭重命令检测。 -
[-M, --find-renames[=<n>]]
打开重命令检测,可选的设置相似阈值,可以看git diff --find-rename
了解用法详情。 -
[<pathspec>...]
指定查看路径目录或文件。
短输出格式:
XY PATH
XY ORIG_PATH -> PATH
对于有合并冲突的路径,X和Y显示合并两边的修改状态。对于没有合并冲突的路径,X表示索引状态,Y表示工作树状态。
对于未跟踪路径,XY为??,其他状态码的解释如下:
* ' ' = 未修改
* M = 被修改
* A = 添加
* D = 删除
* R = 重命名
* C = 被拷贝
* U = 被更新但是未合并
被忽略的文件不被列出,除非--ignored选项生效,在这种情况下,XY是!!
X Y Meaning
-------------------------------------------------
[AMD] not updated
M [ MD] updated in index
A [ MD] added to index
D deleted from index
R [ MD] renamed in index
[MARC] index and work tree matches
[ MARC] M work tree changed since index
[ MARC] D deleted in work tree
[ D] R renamed in work tree
[ D] 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
-------------------------------------------------
如果使用-b,则短格式状态前加一行
## branchname tracking info