est-il possible de `git status` uniquement les fichiers modifiés?

173

Est-il possible d' git statusafficher et d'afficher uniquement les fichiers modifiés?

Le problème est que j'ai trop de fichiers intermédiaires que je ne veux pas valider ou gitignore pour le moment et que je ne peux pas faire défiler vers le haut. J'ai une limite de défilement définie sur Ubuntu.

chrisjlee
la source
1
Comment avez-vous une limite de défilement? Par défaut, git statusappellera le pager.
Lily Ballard
Désolé, la limite de défilement est fixée à 512 lignes sur ma machine. Je suppose que je pourrais le changer; mais préférerait une commande d'une ligne pour afficher uniquement les fichiers modifiés dans l'état, car GD / imagecache générera encore plus de fichiers éventuellement.
chrisjlee
1
Bon ... mon point est que le téléavertisseur n'utilise pas le scrollback de votre terminal.
Lily Ballard
Quelque chose ne va pas avec le simple fait de saluer ce que vous trouvez intéressant? Utilisez --shortou --porcelainpour obtenir des versions sur une ligne de l'état.
torek le
2
Un autre point, basé sur la suggestion à utiliser git ls-files -m: quelle (s) modification (s) vous souciez-vous, mise en scène, non mise en scène, ou les deux?
torek le

Réponses:

268

Vous ne pouvez pas faire cela avec git status, mais vous pouvez utiliser git ls-files -mpour afficher tous les fichiers modifiés.

Lily Ballard
la source
6
Juste pour que les autres le sachent, cela n'affichera que les fichiers qui ont été modifiés sans encore être mis en scène.
Gerry
11
Bien que ce soit la réponse acceptée, elle contient des informations inexactes. Vous pouvez "'git status' uniquement les fichiers modifiés" avec git status | grep modifiedcomme l'indique user23186 dans sa réponse.
K. Alan Bates
9
Pour moi, git ls-files -mne montre rien mais git status | grep modifiedfonctionne.
Sandeepan Nath
1
Comme d'autres l'ont souligné, cela ne montre que les fichiers non mis en scène. Si vous souhaitez afficher à la fois les fichiers non mis en scène ET les fichiers intermédiaires, c'est la meilleure réponse que j'ai vue: stackoverflow.com/a/39994894/452587
thdoan
1
@thdoan Il existe un certain nombre d'options pour afficher les fichiers intermédiaires, bien que cette question particulière semble vouloir exclure explicitement les fichiers intermédiaires. git diff --name-only --diff-filter=M HEADafficherait uniquement les fichiers modifiés pour les deux étapes et non, bien que vous devriez vérifier les documents --diff-filterpour voir quels autres types de filtres vous pourriez vouloir ajouter.
Lily Ballard
58

Il semble que git status -unovous n'aurez que les fichiers suivis par git, sans rien afficher d'autre dans le répertoire. Pas exactement ce que vous avez demandé, mais accomplit peut-être la même chose (obtenir une liste de longueur lisible de fichiers que git suit).

TomNysetvold
la source
1
git status -u non'affiche pas (1) les fichiers suivis qui sont modifiés, ni (2) les fichiers suivis qui sont mis en scène. J'ai vérifié cela avec les versions 1.8.5.2 et 1.9.4 de git.
mxxk
2
@TomNysetvold, vous voulez peut-être dire git status -uno( stackoverflow.com/questions/7008546/… )
mxxk
29
git status -s | awk '{if ($1 == "M") print $2}'
Carl Bäckström
la source
3
Ouawk '$1 == "M" { print $2 }'
Calpau le
29

Pour les fichiers modifiés:

git status | grep modified:
Lance
la source
1
Tellement utile que j'ai créé un alias pour cela:git config --global alias.modified '!git status | grep modified:'
Richard Parnaby-King
15

git diff --name-only --diff-filter=M

ZeroGraviti
la source
2
Je recommande ces filtres: git diff --cached --name-only --diff-filter=ACMRqui fait les fichiers ajoutés, copiés, modifiés et renommés.
qwertzguy
7

git diff --name-only fonctionne aussi.

mpelzsherman
la source
3

Je cherchais les mêmes informations et j'ai trouvé les fichiers modifiés suivants:

git status -uno
Tectrendz
la source
2
git status -uno --porcelainajoute une belle sortie pour l'analyse du script
pprzemek
3

Vous pouvez utiliser

$ git status -uno 

pour ne lister que les fichiers modifiés.

Karthik
la source
3

Le problème est que j'ai trop de fichiers intermédiaires que je ne veux pas valider ou gitignore pour le moment et que je ne peux pas faire défiler vers le haut.

Bien que cela ne réponde pas directement à la question de la liste uniquement des fichiers modifiés, cela peut aider à limiter le nombre de fichiers répertoriés.

Vous pouvez passer un chemin vers git statuspour limiter la sortie à un dossier spécifique dans le référentiel.

Par exemple:

git status app
git status spec
git status src/components
BillFienberg
la source
2

Pour lister les fichiers modifiés, utilisez:

git ls-files -m

Si vous ne voulez que le nom de base (pas de chemin), vous pouvez diriger chaque résultat vers la commande basename en utilisant xargs, ligne par ligne:

git ls-files -m | xargs -L 1 basename
briggyPetits
la source
1

J'utilise cette commande:

$ git status -uno -sb

Et la sortie ressemble à ceci:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h
SebMa
la source
0

J'utilise git cola. C'est un client d'interface utilisateur simple et élégant qui vous montrera les fichiers modifiés et vous fournira un aperçu des modifications que vous avez apportées.

git colavous fournit une interface graphique dans laquelle vous pouvez visualiser les fichiers que vous avez modifiés, ceux que vous avez mis en scène et même ceux que vous ne suivez pas. Votre question était d'utiliser le statut git seulement je crois, mais je pensais que git cola pouvait aider quand cela et d'autres choses aussi. Consultez cette page Web à partir de plus d'informations: git-cola.github.com/screenshots.html

n_x_l
la source
1
Pourriez-vous expliquer en quoi cela se rapporte à ma réponse étant donné que je ne suis pas familier avec ce git cola. par exemple des captures d'écran, ou plus de détails?
chrisjlee
est-ce que pourquoi a été voté contre? :) Quoi qu'il en soit, git cola vous fournit une interface graphique dans laquelle vous pouvez visualiser les fichiers que vous avez modifiés, ceux que vous avez mis en scène et même ceux que vous ne suivez pas. Votre question était d'utiliser le statut git seulement je crois, mais je pensais que git cola pouvait aider quand cela et d'autres choses aussi. Consultez cette page Web à partir de plus d'informations: git-cola.github.com/screenshots.html
n_x_l
Comment changer la langue de l'interface de Cola?
ziyuang
0

Si vous souhaitez répertorier les fichiers modifiés , vous pouvez le faire:

git log -n1 --oneline --name-status | grep '^M'

David Hernandez
la source
0

Pour lister tous les fichiers modifiés, utilisez:

git show --stat --oneline HEAD
Fayaz
la source
0

Toutes les bonnes réponses; juste FEI, "git checkout" (basculer vers ou dans la même branche) semble afficher uniquement les fichiers modifiés.

user1172173
la source
0

OS: windows

La commande suivante affichera toutes les lignes contenant «modifié:» , «renommé:» ou «nouveau fichier:»

git status | findstr "modified: renamed: new file:"

Si vous souhaitez spécifier le type de fichier: (par exemple *.py *.ini)

git status *.py *.ini | findstr "modified: renamed: new file:"

Si vous pensez que c'est trop difficile de taper autant:

  1. créer un fichier batch (par exemple: st.bat)

  2. écrivez le contenu comme suit:

    @echo off
    :: st.bat  (this line doesn't necessarily. ( just let you know the scripts name.))
    git status %~1 | findstr "modified: renamed: new file:"
    
  3. ajoutez le chemin d'environnement qui contient votre fichier de commandes. ( st.bat)

  4. usage

    st.bat "*.py *.ini"
    

    (note: si type> 1 alors doit ajouter le point-virgule)

OS: LINUX

comme @Lance dit que vous pouvez essayer

git status | grep modified:

Carson
la source