Git状态 - 有没有办法只在特定目录中显示更改?

Kub*_*der 131 git directory status

我希望看到自上次提交以来修改的文件列表,如图git status所示,但我只关心位于单个目录中的文件.有没有办法做到这一点?我尝试过git status <directory>,但似乎这完全不同(列出所有更改过的文件,就像我git add <directory>先写的那样).

git-status的文档并没有说明多少,除了它接受git-commit所做的相同选项(但git-commit的目的不是显示已更改文件的列表).

Sam*_*dge 188

从目录中:

git status .
Run Code Online (Sandbox Code Playgroud)

您可以使用任何路径,使用以下语法:

git status <directoryPath>
Run Code Online (Sandbox Code Playgroud)

例如,对于路径为"my/cool/path/here"的目录

git status my/cool/path/here
Run Code Online (Sandbox Code Playgroud)

  • 我必须使用 `git -C &lt;directory&gt; status` (8认同)
  • 谢谢!此外,'git status <directory>'似乎正在做我期望的事情 - 老实说我不记得之前我遇到过什么问题......也许这是一个不同的git版本,dunno. (3认同)
  • 是的,行为肯定从1.6更改为1.7。它满足1.7中的OP要求,但1.6在整个回购中继续存在。 (2认同)

CB *_*ley 31

git status采用相同选项的原因git commit是,目的git status是显示如果使用与传递给的相同选项提交将会发生的情况git status.在这方面git status确实如此git commit --preview.

为了得到你想要的东西,你可以这样做,显示分阶段的变化:

git diff --stat --cached -- <directory_of_interest>
Run Code Online (Sandbox Code Playgroud)

而这显示了未分级的变化:

git diff --stat -- <directory_of_interest>
Run Code Online (Sandbox Code Playgroud)

或者这显示两者:

git diff --stat HEAD -- <directory_of_interest>
Run Code Online (Sandbox Code Playgroud)

  • 这部分工作,虽然它没有显示新创建的(未跟踪)文件,如git-status确实... (2认同)

Can*_*der 13

最简单的解决方案

  1. 转到目录
  2. git status | grep -v '\.\.\/'

当然这会丢弃颜色.