90 votes

git : afficher tous les fichiers modifiés entre deux commits

Un riff sur git : afficher tous les fichiers modifiés entre deux commits : Je veux une liste de tous les fichiers qui ont été modifiés entre deux commits, même s'ils sont maintenant les mêmes (c'est-à-dire modifiés et ensuite modifiés à nouveau).

81voto

Bryce Points 1620

Je pense que cette commande est votre réponse :

git diff --stat abc123 xyz123  # where abc123 and xyz123 are SHA1 hashes of commit objects

En direct de la Livre de la communauté git :

Si vous ne voulez pas voir l'ensemble du patch, vous pouvez ajouter l'option '--stat', qui limitera la sortie aux fichiers qui ont été modifiés avec un petit graphique texte décrivant le nombre de lignes modifiées dans chaque fichier.

21voto

Lloyd Rochester Points 619

Si vous voulez juste voir les noms de fichiers où les commandes ont été effectuées b se situe 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 été modifié entre le commit a et le commit b, laissez tomber le dernier 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 identifiants de commit comme 675ee6860d2c273bcc6c6a0536634a107e2a3d9f . En général, les 8 à 10 premiers chiffres suffisent pour la plupart des projets, mais il peut en falloir plus si le projet a beaucoup de commits. Typiquement, j'utilise la sortie de l'id de git log --oneline .

Lorsque vous obtenez une différence de a...b et que b est postérieur à a dans le temps, il est facile de voir ce qui a été modifié dans chaque fichier chronologiquement.

1voto

Ingo Karkat Points 61399

Celui-ci est similaire à igorw mais elle évite la suppression du SHA par l'intermédiaire de l'option grep :

git log --pretty='format:' --name-only HEAD^^..HEAD | sort -u

Si vous voulez en plus voir comment les fichiers ont été modifiés, remplacez --name-only con --name-status .

1voto

craig Rickett Points 358

J'utiliserais ; en prenant les 8 premiers du hash du commit. Si vous le souhaitez, vous pouvez les envoyer dans un fichier comme ci-dessous :

git log 12345678..87654321 > C:\GitChanges.txt

-1voto

codewarrior Points 200

J'utilise cette commande pour comparer tous les changements entre deux commits :

git difftool -d <commit hash1> <commit hash2>

Comme un git rebase pour écraser tous les commits locaux en un seul.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X