Un riff sur git: show all changed files between two commits: Je veux une liste de tous les fichiers qui ont été modifiés entre deux validations, même si elles sont maintenant les mêmes (c.-à-d., Changé, puis changé).git: affiche tous les fichiers modifiés entre deux validations
Répondre
C'est le meilleur que je pouvais venir avec:
git log --name-only --pretty=oneline --full-index HEAD^^..HEAD | grep -vE '^[0-9a-f]{40} ' | sort | uniq
Remplacer HEAD ^^ et la tête avec les commits que vous souhaitez comparer.
Ma tentative utilise git log
avec --name-only
pour lister tous les fichiers de chaque validation entre ceux spécifiés. --pretty=oneline
fait que la partie au-dessus de la liste de fichiers se compose uniquement du SHA de validation et du titre du message. --full-index
fait au SHA les 40 caractères complets. grep
filtre tout ce qui ressemble à un SHA suivi d'un espace. Sauf si vous avez des fichiers commençant par un SHA suivi d'un espace, le résultat devrait être précis.
Je pense que cette commande est votre réponse:
git diff --stat abc123 xyz123 #where abc123 and xyz123 are SHA1 hashes of commit objects
droite de la git community book
Si vous ne voulez pas voir l'ensemble patch, vous pouvez ajouter le « --stat » option, qui limitera la sortie aux fichiers qui ont changé avec un petit graphique texte indiquant combien de lignes ont changé dans chaque fichier.
Plus précisément, 'git diff --stat
Non, ce n'est pas exactement ce qu'il voulait. Git diff fait un diff direct entre les arbres, il ne considère pas les commits. Si vous créez un nouveau fichier avec le contenu "A", changez le contenu en "B", puis changez-les en "A", "git diff --stat HEAD ^^ HEAD" vous donnera une sortie vide. – igorw
'git diff --name-only' est probablement meilleur que' git diff --stat' mais comme souligné, 'git diff' ne fait pas ce que l'OP voulait. – nnutter
Celui-ci est similaire à igorw « s, mais elle évite la suppression du CSA via grep
:
git log --pretty='format:' --name-only HEAD^^..HEAD | sort -u
Si vous voulez plus de voir comment les fichiers ont été modifiés, remplacer --name-only
avec --name-status
.
Je viens de tester cette commande. Il a fallu environ 10 secondes pour traiter puis a commencé à cracher une énorme liste de fichiers. –
@ ostler.c: Avez-vous passé dans la plage de révision dans '" $ @ "'? Sinon, cela montrera les changements existants, ce qui est beaucoup :-) J'ai révisé ma réponse pour utiliser un exemple, comme dans les autres réponses. –
D'accord, cela a du sens. Je suis surpris que je ne connaissais pas "$ @". Bien que, je ne le trouve pas très utile pour la plupart des commandes. –
Si vous voulez juste voir les noms de fichiers où commettent b
est chronologiquement après a
:
git diff <a commit sha1>...<b commit sha2> --name-only # b is after a in time
Si vous voulez voir tous les noms de fichiers et ce qui a changé de commettre un à commettre b puis déposez la dernière argument.
git diff <a commit sha1>...<b commit sha2> # shows file names and what changed in each file
Un exemple de <commit sha1>
sont les commettras id comme 675ee6860d2c273bcc6c6a0536634a107e2a3d9f
. En règle générale, les 8 à 10 premiers chiffres fonctionneront sur la plupart des projets, mais peuvent nécessiter davantage si le projet comporte des tas de validations. Typiquement, j'utilise la sortie de l'ID de git log --oneline
. Lorsque vous obtenez une différence de a ... b et b est plus tard que dans le temps, il est facile de voir ce qui a été changé dans chaque fichier chronologiquement.
Je voudrais utiliser; prendre les 8 premiers du hash de commit. Si vous vouliez vous redirigez pourrait dans un fichier selon le ci-dessous:
git log 12345678..87654321 > C:\GitChanges.txt
- 1. Git ajouter tous les fichiers modifiés, supprimés et non suivis?
- 2. Comment savoir quels fichiers ont été modifiés entre les validations à l'aide de Grit
- 3. CVS: affiche les fichiers modifiés localement
- 4. Git: comment fusionner les fichiers modifiés seulement
- 5. uniquement les fichiers modifiés Merging utilisant Git
- 6. Télécharger uniquement les fichiers modifiés git
- 7. Créer une liste des fichiers/répertoires/etc. Modifiés utiliser git entre deux tags
- 8. Afficher les différences entre les validations
- 9. rsync, tous les fichiers sont affichés comme modifiés
- 10. Ignorer les fichiers modifiés (mais non validés) dans git?
- 11. Génération d'une liste des fichiers modifiés entre les versions hg
- 12. Mercurial - tous les fichiers modifiés dans un ensemble de modifications?
- 13. Comment lister tous les fichiers modifiés dans un shadow-volume?
- 14. Crochet de pré-validation Git: fichiers modifiés/ajoutés
- 15. Quelle commande svn listerait tous les fichiers modifiés sur une branche?
- 16. git-gui: Déplacer le focus du clavier sur "fichiers modifiés"
- 17. Comment afficher les validations complètes lors du suivi de l'historique d'un seul fichier dans Git?
- 18. Afficher tous les changesets entre deux étiquettes
- 19. Fichiers non suivis entre les branches dans Git
- 20. Subversion: télécharger des fichiers modifiés entre 2 révisions
- 21. Comment ajouter des commentaires à tous les fichiers modifiés depuis une certaine validation?
- 22. Mercurial: informations sur les fichiers modifiés
- 23. Commande git pour ajouter/mettre en scène les fichiers modifiés dans les dossiers uniquement
- 24. Considérant les fichiers modifiés pour la reconstruction
- 25. Trouver les différences de fichiers entre deux référentiels
- 26. Git diff entre deux balises données
- 27. Tous les fichiers .cpp dépendent de deux fichiers .h?
- 28. Les fichiers Git ont été modifiés après la vérification de paiement
- 29. Afficher les validations non fusionnées dans une branche sur git
- 30. Git. La branche de la fonctionnalité de paiement entre les validations de fusion
Quand je lance cette commande contre HEAD^et la tête, je reçois une liste de ce qui ressemble chaque fichier dans le référentiel; même ceux qui n'ont pas changé. –
Mon mauvais, le format est " .. " au lieu de "". –
igorw
Merci, un peu gênant mais ça ira. – Andrew