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

问题描述 投票:125回答:4

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

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

git directory status
4个回答
180
投票

从目录中:

git status .

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

git status <directoryPath>

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

git status my/cool/path/here

30
投票

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>

13
投票

最简单的解决方案

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

当然这会丢弃颜色。


1
投票

作为一个注释,如果你简化检查git stats而不去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的。

积分:

© www.soinside.com 2019 - 2024. All rights reserved.