Git status - есть ли способ показать изменения только в определенном каталоге?

Я хотел бы увидеть список файлов, измененных с момента последнего коммита, поскольку отображается "git status", но мне все равно, что файлы находятся в одном каталоге. Есть ли способ сделать это? Я попробовал 'git status <directory> ', но кажется, что это делает что-то совершенно другое (перечисляет все измененные файлы, как это было бы, если бы я написал "git add <directory> " ).

Документация для git -status не говорит многого, кроме того факта, что она принимает те же параметры, что git -commit делает (но git -комментировать цель не показывать списки измененных файлы...).

Ответ 1

Внутри каталога:

git status .

Вы можете использовать любой путь на самом деле, используйте этот синтаксис:

git status <directoryPath>

Например, для каталога с контуром "my/cool/path/here"

git status my/cool/path/here

Ответ 2

Причина, по которой 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>

Ответ 3

Самое простое решение:

  • Перейдите в каталог
  • git status | grep -v '\.\.\/'

Конечно, это отбрасывает цвета.

Ответ 4

В качестве примечания, если вы упростите проверку статистики 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

И вызов этого простого script: gitstat /path/to/foo-project. Вы также можете использовать его, пока foo-project просто выполняете gitstat ., и предположим, что короче git status -s, git diff --stat или git diff --stat HEAD, если вы всегда используете консоль вместо gui's.

Credits: