Je recherche une git
commande simple qui fournit une liste bien 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 indésirables pour chacun.
Y a-t-il une autre git
commande qui fournira juste la liste que je veux, afin que je puisse éviter de l'analyser à partir de la git show
sortie?
git log --until 2013-05-21 --pretty="short" --name-only
avec un bon effet.n
master
git diff-tree --name-status -r @{3} master
git diff --name-only master
- Pour répertorier TOUS les fichiers modifiés sur la branche actuelle, en les comparant à la branche principale.Réponses:
Manière préférée (parce que c'est une commande de plomberie ; censée être programmatique):
Une autre façon (moins préférée pour les scripts, car il s'agit d'une commande porcelaine ; destinée à être orientée vers l'utilisateur)
--no-commit-id
supprime la sortie de l'ID de validation.--pretty
argument spécifie une chaîne de format vide pour éviter la corruption au début.--name-only
argument affiche uniquement les noms de fichiers qui ont été affectés (Merci Hank). Utilisez--name-status
plutôt, si vous voulez voir ce qui est arrivé à chaque fichier ( D eleted, M odified, A dded)-r
argument est de rentrer dans des sous-arbresla source
diff-tree
cela ne fonctionnera pas lorsque vous regardez le commit racine.--name-only
option par--name-status
donnera un résumé plus clair.git log --name-only -n 1 <hash>
Le dernier commit serait:git log --name-only -n 1 HEAD~1..HEAD
git show
est "porcelaine" (destiné àgit diff-tree
être utilisé par l' utilisateur) et "plomberie" (destiné à être utilisé par programme, par exemple à partir de scripts). L'interface pour le premier peut changer au fil du temps (de sorte que les responsables de git pourraient chuter--name-only
même si je ne pense pas qu'ils le feraient ) pour des raisons d'utilisabilité, tandis que l'interface pour le second sera maintenue aussi stable que possible pour des raisons de compatibilité.Si vous souhaitez obtenir la liste des fichiers modifiés:
Si vous souhaitez obtenir la liste de tous les fichiers d'un commit, vous pouvez utiliser
la source
git ls-tree --name-only HEAD
(le paramètre <commit-ish> est requis ; dans cet exemple, il est HEAD) fonctionne pour moi avec la version 1.6.4.3 de git--no-commit-id
pour éviter d'imprimer le SHA1, comme ceci:git diff-tree --no-commit-id --name-only -r <commit-ish>
-r
/-t
option, n'est-ce pas? Parce que diff-tree gère les fichiers modifiés et ajoutés. Si vous souhaitez répertorier tous les nouveaux fichiers (ajoutés), utilisezgit diff-tree -r --name-only --no-commit-id --diff-filter=A <commit-ish>
Je suppose simplement que ce
gitk
n'est pas souhaité pour cela. Dans ce cas, essayezgit show --name-only <sha>
.la source
--name-status
.gitk
c'est en fait une manière décente de revoir les fichiers et d'afficher le fichier sur lequel se trouve le diff. Ex.: Code examinant un commit de monstre d'un pair.J'utilise personnellement la combinaison de --stat et --oneline avec la commande show :
Si vous n'aimez pas / ne voulez pas les statistiques d'ajout / suppression, vous pouvez remplacer --stat par --name-only
la source
alias gits='git show --stat --oneline'
puisgits
en lui-même affiche les dernières modifications (dans HEAD), tandis quegits b24f5fb
peut être utilisé pour afficher les modifications de toute révision.git config --global alias.changes 'show --stat --oneline'
. Ensuite, vous pouvez tapergit changes
(avec un commit-ish facultatif) et obtenir la sortie des premiers exemples ci-dessus.git config --global alias.changes "show --stat --oneline"
git show
fonctionne également pour examiner les changements cachés: par exemplegit show --stat --oneline stash@{1}
Vous pouvez aussi faire
et vous pouvez parcourir les différents validations, les messages de validation et les fichiers modifiés.
Tapez q pour récupérer votre invite.
la source
git show 5944ad2a8b5 --name-only
pour lister le nom d'un commit spécifiqueRécemment, j'ai dû répertorier tous les fichiers modifiés entre deux validations. J'ai donc utilisé cette commande (également * spécifique à nix)
Mise à jour : ou comme le souligne Ethan ci-dessous
L'utilisation
--name-status
inclura également le changement (ajouté, modifié, supprimé, etc.) à côté de chaque fichierla source
git diff --name-status START_COMMIT..END_COMMIT
vous n'avez pas besoin de la fin|sort | uniq
.git diff --name-only START_COMMIT..END_COMMIT
git diff --name-only START_COMMIT..END_COMMIT | grep -v -e '**.png' -e '**.xml'
. Je voulais une liste de changements de code uniquement pour un énorme PR qui avait ajouté des milliers de dispositions PNG et XML.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 l'
--name-only
option.git show --stat --name-only (hash)
la source
J'utilise un alias modifié assez souvent. Pour le configurer:
puis:
Commandes similaires qui peuvent être utiles:
la source
Utilisation
Cela vous montrera l'ID de validation, le message, les fichiers modifiés et s'il a été modifié, créé, ajouté ou supprimé. Un peu d'une commande tout-en-un.
la source
Utilisation de la commande standard git diff (également adaptée aux scripts):
Si vous souhaitez également l'état des fichiers modifiés:
Cela fonctionne bien avec les validations de fusion.
la source
essayez cette commande pour le nom et change le numéro de ligne
n'afficher que les noms de fichiers
pour obtenir le dernier hachage de validation, essayez cette commande
dernière validation avec afficher le nom et l'état du fichier, modifier, créer ou supprimer
ou pour tous
pour des informations plus avancées sur le journal git, lisez cet article
https://devhints.io/git-log-format
https://devhints.io/git-log
la source
la source
D'ACCORD, il existe plusieurs façons d'afficher tous les fichiers dans un commit particulier ...
Pour réduire les informations et afficher uniquement les noms des fichiers qui ont été validés, vous pouvez simplement ajouter
--name-only
ou--name-status
marquer ..., ces drapeaux vous montrent simplement les noms de fichiers qui sont différents des validations précédentes comme vous le souhaitez ...Vous pouvez donc faire
git diff
suivi de--name-only
, avec deux hachages de validation après<sha0> <sha1>
, quelque chose comme ci-dessous:Je crée également l'image ci-dessous pour montrer toutes les étapes à suivre dans ces situations:
la source
J'utilise ceci pour obtenir la liste des fichiers modifiés entre deux changesets:
la source
git diff --name-status .. | grep ^[^D] | cut -f2
J'aime utiliser
la source
Il y a aussi
git whatchanged
, qui est un niveau plus bas quegit log
Il affiche le résumé de la validation avec une liste de fichiers en dessous avec leurs modes et s'il y a ajouté (
A
), supprimé (D
) ou modifié (M
);Donnerait quelque chose comme:
Je sais que cette réponse ne correspond pas vraiment «sans aucune information étrangère», mais je pense toujours que cette liste est plus utile que les noms de fichiers.
la source
whatchanged
au lieu de fournir des paramètres.J'aime ça:
la source
A
&D
(ajouter et supprimer) à l'envers, car il montre la différence entre la validation spécifiée et la validation précédente, au lieu de l'inverse. Ça devrait l'êtregit diff --name-status <SHA1>^ <SHA1>
.Utilisez une simple commande d'une ligne, si vous voulez juste que la liste des fichiers soit modifiée lors du dernier commit:
la source
Liste les fichiers modifiés dans une validation:
Cela n'affiche pas les messages de journal, les nouvelles lignes supplémentaires ou tout autre encombrement. Cela fonctionne pour n'importe quel commit, pas seulement celui en cours. Je ne sais pas pourquoi il n'a pas encore été mentionné, alors je l'ajoute.
la source
git diff SHA1^ SHA1
etgit show SHA1
.git show
affiche également le message de validationAffichez le journal.
COMMIT peut être vide ("") ou le sha-1 ou le sha-1 raccourci.
Cela listera uniquement les fichiers, très utiles pour un traitement ultérieur.
la source
J'ai trouvé une réponse parfaite à cela:
Pour que je sache
la source
Une combinaison de "
git show --stat
" (merci Ryan) et de quelques commandes sed devrait réduire les données pour vous:Cela ne produira que la liste des fichiers modifiés.
la source
Il existe une astuce simple à afficher en tant que liste de fichiers, ajoutez simplement
:
après le hachage.Vous pouvez ensuite percer,
Si vous frappez un fichier, vous obtiendrez la version brute du fichier; qui est parfois ce que vous voulez si vous ne cherchez qu'une belle référence ou des morceaux de code clés (les différences peuvent tout gâcher),
Le seul inconvénient de cette méthode est qu'elle n'affiche pas facilement une arborescence de fichiers.
la source
fonctionne bien pour moi
la source
J'utilise ceci pour obtenir la liste des fichiers modifiés dans le commit de fusion
ou
la source
Si vous utilisez le plugin oh-my-zsh et git, le raccourci glg est utile.
la source
glg
sorties: beaucoup plus. Désolé pour la confusion.Seule la liste des fichiers (pas même le message de validation):
Par exemple, ouvrez tous les fichiers modifiés dans votre éditeur:
la source
Je pensais que je partagerais un résumé de mon alias .. aussi je trouve l'utilisation de 'zsh' super avec git it chroma keys tout bien et dit que vous voulez que la branche soit en tout temps en changeant l'invite de commande.
Pour ceux qui couvrent de SVN, vous trouverez cela utile: (c'est une combinaison d'idées de différents threads, je ne prends que le crédit de savoir comment utiliser le copier / coller)
la source
Cela devrait fonctionner:
Cela montrera ce qui n'est pas mis en scène et ce qui est mis en scène.
la source