web-dev-qa-db-fra.com

Statut Git - existe-t-il un moyen d'afficher les modifications uniquement dans un répertoire spécifique?

J'aimerais voir une liste de fichiers modifiés depuis le dernier commit, comme le montre git status, Mais je me soucie uniquement des fichiers situés dans un seul répertoire. Y a-t-il un moyen de faire cela? J'ai essayé git status <directory>, Mais il semble que cela fasse quelque chose de complètement différent (liste tous les fichiers modifiés, comme ce serait le cas si j'écrivais git add <directory> En premier).

La documentation de git-status ne dit pas grand-chose, mis à part le fait qu'elle accepte les mêmes options que git-commit (mais l'objectif de git-commit n'est pas d'afficher des listes de fichiers modifiés).

129
Kuba Suder

Dans l'annuaire:

git status .

Vous pouvez vraiment utiliser n'importe quel chemin, utilisez cette syntaxe:

git status <directoryPath>

Par exemple pour le répertoire avec le chemin "mon/cool/chemin/ici"

git status my/cool/path/here
184
Sam Doidge

La raison pour laquelle git status prend les mêmes options que git commit est-ce que le but de git status est de montrer ce qui se passerait si vous commettiez avec les mêmes options que vous avez passées à git status. À cet égard git status est vraiment git commit --preview.

Pour obtenir ce que vous voulez, vous pouvez faire ceci en montrant les changements mis en scène:

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

et ceci, qui montre les changements non mis en scène:

git diff --stat -- <directory_of_interest>

ou ce qui montre à la fois:

git diff --stat HEAD -- <directory_of_interest>
30
CB Bailey

La solution la plus simple:

  1. Aller au répertoire
  2. git status | grep -v '\.\.\/'

Bien sûr, cela supprime les couleurs.

13
Can Berk Güder

En guise de remarque, si vous simplifiez la tâche pour vérifier les statistiques git sans accéder à son répertoire,

 ### créer un fichier 
 Sudo nano /usr/local/bin/gitstat[.____. Printer... ] #!/usr/bin/env bash 
 
 dir = $ 1 
 
 if [[$ dir == ""]]; then 
 echo "Répertoire requis!" 
 exit 
 fi 
 
 echo "Git stat for '$ dir'." 
 
 git --git-dir = $ dir/.git --work-tree = $ dir diff --stat 
 
 ### donner exec perm 
 Sudo chmod + x /usr/local/bin/gitstat

Et en appelant ce simple script: gitstat /path/to/foo-project. Vous pouvez également l'utiliser en foo-project je fais juste gitstat . et donc supposons plus court que git status -s, git diff --stat ou git diff --stat HEAD _ si vous utilisez toujours la console au lieu de l'interface graphique.

Crédits:

2
K-Gun