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

时间:2009-04-03 19:24:25

标签: git directory status

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

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

4 个答案:

答案 0 :(得分:177)

从目录中:

git status .

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

git status <directoryPath>

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

git status my/cool/path/here

答案 1 :(得分:30)

git status采用与git commit相同的选项的原因是git status的目的是显示如果您使用与传递给{{{{}}时相同的选项提交会发生什么1}}。在这方面,git status确实是git status

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

git commit --preview

,这显示了未分级的更改:

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

或显示两者的内容:

git diff --stat -- <directory_of_interest>

答案 2 :(得分:13)

最简单的解决方案:

  1. 转到目录
  2. git status | grep -v '\.\.\/'
  3. 当然这会丢弃颜色。

答案 3 :(得分: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 -s中使用它,如果您总是使用控制台而不是gui,则假设短于git diff --statgit diff --stat HEAD或{{1}}

现金: