Git status-是否有一种方法只在特定目录中显示更改?

我希望看到自上次提交以来修改的文件列表,如 git status所示,但是我只关心位于单个目录中的文件。有办法吗?我尝试了 git status <directory>,但它似乎做了一些完全不同的事情(列出所有更改过的文件,如果我先编写 git add <directory>,它们就会这样)。

Git-status 的文档没有透露太多信息,除了它接受与 git-commit 相同的选项(但 git-commit 的目的不是显示已更改文件的列表)。

105893 次浏览

最简单的解决办法:

  1. 进入目录
  2. git status | grep -v '\.\.\/'

当然,这丢弃了颜色。

git status使用与 git commit相同的选项的原因是,git status的目的是显示如果使用与传递给 git status的相同选项提交时会发生什么情况。在这方面,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>

从目录中:

git status .

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

git status <directoryPath>

例如,路径为“ my/cool/path/here”的目录

git status my/cool/path/here

作为一个注意,如果你简化检查 git 统计而不去 git 目录;

### create file
sudo nano /usr/local/bin/gitstat


### put this in


#!/usr/bin/env bash


dir=$1


if [[ $dir == "" ]]; then
echo "Directory is required!"
exit
fi


echo "Git stat for '$dir'."


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


### give exec perm
sudo chmod +x /usr/local/bin/gitstat

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

图片来源: