git status – 有没有办法只在特定的目录中显示更改?

我希望看到自上次提交后修改的文件列表,正如'git status'所示,但我只关心位于单个目录中的文件。 有没有办法做到这一点? 我尝试了'git status <directory>',但是它看起来完全不同(列出所有更改的文件,因为如果我先写'git add <directory>')。

git-status的文档除了接受git-commit所做的相同选项(但git-commit的目的不是显示已更改文件的列表…)之外,并没有提供多less内容。

从目录内:

git status . 

你可以使用任何path,使用这个语法:

 git status <directoryPath> 

例如,对于path为“my / cool / path / here”的目录

 git status my/cool/path/here 

git statusgit commit有相同的选项的原因是git status的目的是显示如果你使用与git status相同的选项git commit话会发生什么。 在这方面git status是真正的git commit --preview

为了得到你想要的,你可以做到这一点,显示阶段性的变化:

 git diff --stat --cached -- <directory_of_interest> 

这表明了未分类的变化:

 git diff --stat -- <directory_of_interest> 

或者这显示了两个:

 git diff --stat HEAD -- <directory_of_interest> 

最简单的解决scheme

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

当然这丢弃颜色。

作为一个说明,如果你简化来检查git统计信息而不去git目录;

 ###创build文件
 sudo nano / usr / local / bin / gitstat

 ###把这个放进去

 #!/ usr / bin / env bash

 DIR = $ 1

如果[[$ dir ==“”]]; 然后
    回声“目录是必需的!”
    出口
科幻

 echo“Git stat for'$ dir'。”

 git --git-dir = $ dir / .git --work-tree = $ dir diff --stat

 ###给予执行权限
 sudo chmod + x / usr / local / bin / gitstat

并调用这个简单的脚本: gitstat /path/to/foo-project 。 你也可以在foo-project使用它,只是做gitstat . 所以假设短于git status -sgit diff --stat或者git diff --stat HEAD如果你总是使用控制台而不是gui的。

积分:

  • @Charles Bailey: https ://stackoverflow.com/a/715373/362780
  • 来自工作目录之外的Git状态