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 status
和git 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
- 转到目录
-
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 -s
, git diff --stat
或者git diff --stat HEAD
如果你总是使用控制台而不是gui的。
积分:
- @Charles Bailey: https ://stackoverflow.com/a/715373/362780
- 来自工作目录之外的Git状态