Git status - czy istnieje sposób na pokazanie zmian tylko w określonym katalogu?

Chciałbym zobaczyć listę plików zmodyfikowanych od ostatniego commita, jak pokazuje git status, ale zależy mi tylko na plikach znajdujących się w jednym katalogu. Jest na to sposób? Próbowałem git status <directory>, ale wygląda na to, że robi to coś zupełnie innego (wymienia wszystkie zmienione pliki, tak jak byłoby, gdybym najpierw napisał git add <directory>).

Dokumentacja git-status niewiele mówi, poza faktem, że akceptuje te same opcje, co git-commit (ale celem git-commit nie jest Pokazywanie listy zmienionych plików).

Author: Ajay, 2009-04-03

4 answers

Z katalogu:

git status .

Możesz użyć dowolnej ścieżki, użyj tej składni:

git status <directoryPath>

Na przykład dla katalogu ze ścieżką "my / cool / path / here"

git status my/cool/path/here
 162
Author: Sam Doidge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 08:01:39

Powodem, dla którego git status przyjmuje te same opcje co git commit, jest to, że celem git status jest pokazanie, co by się stało, gdybyś zastosował te same opcje, co przekazałeś git status. Pod tym względem git status jest naprawdę git commit --preview.

Aby uzyskać to, co chcesz, możesz zrobić to, co pokazuje zmiany:

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

I to, co pokazuje zmiany:

git diff --stat -- <directory_of_interest>

Lub to, co pokazuje oba:

git diff --stat HEAD -- <directory_of_interest>
 26
Author: CB Bailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-03 19:34:02

Najprostsze rozwiązanie:

  1. Przejdź do katalogu
  2. git status | grep -v '\.\.\/'

Oczywiście to odrzuca kolory.

 13
Author: Can Berk Güder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-03 19:30:00

Jako uwaga, jeśli uprościsz sprawdzanie statystyk git bez przechodzenia do katalogu 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

I wywołanie tego prostego skryptu: gitstat /path/to/foo-project. Można go również używać w foo-project po prostu robiąc gitstat ., a więc przypuśćmy, że krótszy niż git status -s, git diff --stat lub git diff --stat HEAD Jeśli zawsze używasz konsoli zamiast interfejsu graficznego.

Napisy:

 1
Author: K-Gun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:26