Question Comment lister tous les fichiers dans un commit?


Je cherche un simple git commande qui fournit une liste joliment formatée de tous les fichiers qui faisaient partie de la validation donnée par un hachage (SHA1), sans informations superflues.

J'ai essayé:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Bien qu'il répertorie les fichiers, il inclut également des informations diff non désirées pour chacun.

Y at-il un autre git commande qui fournira seulement la liste que je veux, de sorte que je peux éviter de l'analyser de la git show sortie?


2171
2018-01-08 12:26


origine


Réponses:


Voie préférée (parce que c'est un plomberie commander; destiné à être programmatique):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

Autrement (moins préféré pour les scripts, parce que c'est un porcelaine commander; destiné à être face à l'utilisateur)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • le --no-commit-id supprime la sortie d'ID de validation.
  • le --pretty argument spécifie une chaîne de format vide pour éviter le crochage au début.
  • le --name-only l'argument montre seulement les noms de fichiers qui ont été affectés (Merci Hank).
  • le -r l'argument est de se reproduire dans des sous-arbres

2853
2018-01-08 13:02



Si vous voulez obtenir la liste des fichiers modifiés:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Si vous voulez obtenir la liste de tous les fichiers dans un commit, vous pouvez utiliser

git ls-tree --name-only -r <commit-ish>

189
2018-01-14 19:22



Je vais juste supposer que gitk n'est pas désiré pour cela. Dans ce cas, essayez git show --name-only <sha>.


180
2018-01-08 12:34



J'utilise personnellement la combinaison de --stat et --une ligne avec le montrer commander:

git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD

Si vous n'aimez pas les statistiques d'addition / suppression, vous pouvez les remplacer --stat avec --name seulement

git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD

113
2017-07-11 23:21



Récemment j'ai eu besoin de lister tous les fichiers modifiés entre deux commits. J'ai donc utilisé cette commande (aussi * nix spécifique)

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

Mettre à jour: Ou comme le souligne Ethan ci-dessous

git diff --name-only START_COMMIT..END_COMMIT

En utilisant --name-status inclura également la modification (ajoutée, modifiée, supprimée, etc.) à côté de chaque fichier

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



Vous pouvez aussi faire

git log --name-only

et vous pouvez parcourir les différents commits, commettre des messages et les fichiers modifiés.

Tapez q pour récupérer votre invite.


56
2018-05-27 01:20



Forme la plus simple:

git show --stat (hash)

C'est plus facile à retenir et cela vous donnera toutes les informations dont vous avez besoin.

Si vous ne voulez vraiment que les noms des fichiers, vous pouvez ajouter --name-only option.

git show --stat --name-only (hash)


48
2017-07-16 00:06



j'utilise modifié alias un assez souvent. Pour le configurer:

git config --global alias.changed 'show --pretty="format:" --name-only'

puis:

git changed (lists files modified in last commit)   
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)

Commandes similaires pouvant être utiles:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only

45
2018-04-29 13:13