Je cherche une simple commande git
qui fournit une liste bien formatée de tous les fichiers qui faisaient partie de la livraison donnée par un hachage (SHA1), sans aucune information étrangère.
J'ai essayé:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Bien qu'il répertorie les fichiers, il inclut également des informations diff indésirables pour chacun.
Existe-t-il une autre commande git
qui fournira uniquement la liste que je veux, afin d’éviter de l’analyser à partir de la sortie git show
?
Méthode préférée (car il s'agit d'une commande plumbing; destinée à être programmatique):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Une autre façon (moins préféré pour les scripts, car il s'agit d'une commande porcelain; destiné à être orienté vers l'utilisateur)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
--no-commit-id
supprime la sortie de l'ID de validation.--pretty
spécifie une chaîne de format vide pour éviter le blocage au début.--name-only
affiche uniquement les noms de fichier affectés (Merci Hank).-r
consiste à recurse dans des sous-arbresSi 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 d’un commit, vous pouvez utiliser
git ls-tree --name-only -r <commit-ish>
Je suppose que gitk
n'est pas souhaité pour cela. Dans ce cas, essayez git show --name-only <sha>
.
J'utilise personnellement la combinaison de --stat et --oneline avec le show command:
git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD
Si vous n'aimez pas/voulez les statistiques d'ajout/suppression, vous pouvez remplacer --stat par --name-only
git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
Récemment, j'ai eu besoin de lister tous les fichiers modifiés entre deux commits. J'ai donc utilisé cette commande (également spécifique à * nix)
git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq
Mise à jour : Ou comme le souligne Ethan ci-dessous
git diff --name-only START_COMMIT..END_COMMIT
Utiliser --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
Tu peux aussi faire
git log --name-only
et vous pouvez parcourir divers commits, commettre des messages et les fichiers modifiés.
Tapez q pour récupérer votre invite.
J'utilise changé alias a 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)
Des commandes similaires qui peuvent être utiles:
git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only
Utilisation de la commande standard git diff (également utile pour les scripts):
git diff --name-only <sha>^ <sha>
Si vous voulez aussi le statut des fichiers modifiés:
git diff --name-status <sha>^ <sha>
Cela fonctionne bien avec les commits de fusion.
Utilisation
git log --name-status
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.
$ git log 88ee8 ^ .. 88ee8 --name-only --pretty = "format:"
OK, il existe deux façons d'afficher tous les fichiers d'un commit particulier ...
Pour réduire les informations et afficher uniquement les noms des fichiers qui ont été validés, vous pouvez simplement ajouter le drapeau --name-only
ou --name-status
..., ces drapeaux affichent simplement les noms de fichiers différents des validations précédentes que vous souhaitez ...
Vous pouvez donc faire git diff
suivi de --name-only
, avec deux hachages de validation après <sha0> <sha1>
, comme ci-dessous:
git diff --name-only 5f12f15 kag9f02
Je crée également l'image ci-dessous pour montrer toutes les étapes à suivre dans cette situation:
J'utilise ceci pour obtenir la liste des fichiers modifiés entre deux changesets:
git diff --name-status <SHA1> <SHA2> | cut -f2
J'aime utiliser
git show --stat <SHA1>^..<SHA2>
git show --name-only commitCodeHere
Il y a aussi git whatchanged
, qui est plus bas niveau que git log
NAME
git-whatchanged - Show logs with difference each commit introduces
Il affiche le récapitulatif de validation avec une liste de fichiers en dessous, avec leurs modes et, si ajouté, (A
), supprimé (D
) ou modifié (M
);
$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363
Donnerait quelque chose comme:
commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <[email protected]>
Date: Tue Sep 29 17:23:22 2015 +0200
added fb skd and XLForm
:000000 100644 0000000... 90a20d7... A Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A Pods/Bolts/Bolts/Common/BFTask.h
...
Je sais que cette réponse ne correspond pas vraiment "sans informations superflues.", Mais je pense toujours que cette liste est plus utile que juste les noms de fichiers.
J'aime ça:
git diff --name-status <SHA1> <SHA1>^
Utilisez une simple commande d'une ligne, si vous souhaitez simplement que la liste des fichiers soit modifiée lors du dernier commit:
git diff HEAD~1 --name-only
Trouvé une réponse parfaite à ceci:
git show --name-status --oneline <commit-hash>
Pour que je sache
which files were just modified M
Which files were newly added , A
Which files were deleted , D
Afficher le journal.
COMMIT peut être vide ("") ou le sha-1 ou le sha-1 raccourci.
git log COMMIT -1 --name-only
Cela ne listera que les fichiers, très utiles pour un traitement ultérieur.
git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"
Listez les fichiers qui ont changé dans un commit:
git diff --name-only SHA1^ SHA1
Cela ne montre pas les messages de journal, les nouvelles lignes ou tout autre fouillis. Cela fonctionne pour n'importe quel commit, pas seulement celui en cours. Vous ne savez pas pourquoi n'a pas encore été mentionné , alors je l'ajoute.
Une combinaison de "git show --stat
" (merci Ryan) et de quelques commandes sed devrait réduire les données pour vous:
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
Cela ne produira que la liste des fichiers modifiés.
Il existe une astuce simple à afficher sous forme de liste de fichiers: ajoutez simplement :
après le hachage.
git show 9d3a52c474:
Vous pouvez ensuite percer,
git show 9d3a52c474:someDir/someOtherDir
Si vous cliquez sur un fichier, vous en aurez la version brute. ce qui est parfois ce que vous voulez si vous cherchez seulement une référence Nice ou des morceaux de code essentiels (les différences peuvent tout gâcher)
git show 9d3a52c474:someDir/someOtherDir/somefile
Le seul inconvénient de cette méthode est qu’elle ne montre pas facilement une arborescence de fichiers.
git show HEAD@{0}
fonctionne bien pour moi
essayez cette commande pour name et change le numéro de ligne
git show --stat <commit-hash>
afficher uniquement les noms de fichiers
git show --stat --name-only <commit-hash>
pour obtenir le dernier hachage de commit puis essayez cette commande
git log -1
ou pour tous git log
J'utilise ceci pour obtenir la liste des fichiers modifiés dans la validation de fusion
λ git log -m -1 --name-only --pretty="format:"
configs/anotherconfig.xml
configs/configsInRepo.xml
ou
λ git log -m -1 --name-status --pretty="format:"
A configs/anotherconfig.xml
M configs/configsInRepo.xml
Si vous utilisez les plugins oh-my-zsh et git, le raccourci glg est utile:
$ glg
commit f014429013e360e1e1ef4f297b315358a5d47b5e
Author: huhu <[email protected]>
Date: Tue Dec 18 07:21:11 2018 +0800
Refine profile page.
mini/app.json | 27 ++++++++-
mini/components/postItemTwo/postItemTwo.wxml | 6 +-
mini/pages/daren/daren.js | 99 ++++++++++++++++++++++++++++++++
mini/pages/daren/daren.json | 3 +
mini/pages/daren/daren.wxml | 16 ++++++
mini/pages/daren/daren.wxss | 27 +++++++++