Git status - is there a way to show changes only in a specific directory?

巧了我就是萌 提交于 2019-11-26 22:40:51

问题


I would like to see a list of files modified since the last commit, as git status shows, but I care only about files located in a single directory. Is there a way to do this? I tried git status <directory>, but it seems this does something completely different (lists all changed files, as they would be if I wrote git add <directory> first).

The documentation for git-status doesn't tell much, apart from the fact that it accepts the same options that git-commit does (but git-commit's purpose isn't to show lists of changed files).


回答1:


From within the directory:

git status .

You can use any path really, use this syntax:

git status <directoryPath>

For instance for directory with path "my/cool/path/here"

git status my/cool/path/here



回答2:


The reason that git status takes the same options as git commit is that the purpose of git status is to show what would happen if you committed with the same options as you passed to git status. In this respect git status is really git commit --preview.

To get what you want, you could do this which shows staged changes:

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

and this, which shows unstaged changes:

git diff --stat -- <directory_of_interest>

or this which shows both:

git diff --stat HEAD -- <directory_of_interest>



回答3:


Simplest solution:

  1. Go to the directory
  2. git status | grep -v '\.\.\/'

Of course this discards colors.




回答4:


As a note, if you simplify to check git stats without going to git directory;

### 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

And calling that simple script: gitstat /path/to/foo-project. You can also use it while in foo-project just doing gitstat . and so suppose shorter than git status -s, git diff --stat or git diff --stat HEAD if your are always using console instead of gui's.

Credits:

  • @Charles Bailey: https://stackoverflow.com/a/715373/362780
  • Git Status From Outside of the Working Directory


来源:https://stackoverflow.com/questions/715321/git-status-is-there-a-way-to-show-changes-only-in-a-specific-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!