web-dev-qa-db-fra.com

Comment voir les changements dans un commit Git?

Quand je fais git diff COMMIT je vois les changements entre ce commit et HEAD (autant que je sache), mais j'aimerais voir les changements apportés par ce simple commit.

Je n'ai trouvé aucune option évidente sur diff/log qui me donnera ce résultat.

1290
laktak

Pour voir le diff pour un hash COMMIT particulier:

git diff COMMIT~ COMMIT vous montrera la différence entre l'ancêtre de cet COMMIT et le COMMIT. Reportez-vous aux pages de manuel relatives à git diff pour obtenir des détails sur la commande et gitrevisions à propos de la notation ~ et de ses amis.

Sinon, git show COMMIT fera quelque chose de très similaire. (Les données du commit, y compris ses diff - mais pas pour les commits de fusion.) Voir la git show manpage .

1667
Nevik Rehnel

Comme mentionné dans " Abréviation de diff de git commit avec son parent? ", vous pouvez également utiliser git diff avec:

_git diff COMMIT^!
_

ou

_git diff-tree -p COMMIT
_

Avec git show, il vous faudrait (pour vous concentrer uniquement sur diff):

_git show --color --pretty=format:%b $COMMIT
_

Le paramètre COMMIT est un commit-ish:

Un objet commit ou un objet pouvant être déréférencé de manière récursive en un objet commit. Les éléments suivants sont tous des commit-ishes: un objet commit, un objet tag qui pointe vers un objet commit, un objet tag qui pointe vers un objet tag qui pointe vers un objet commit, etc.

Voir gitrevision "SPECIFYING REVISIONS" pour référencer un commit.
Voir aussi " Qu'est-ce que tree-ish signifie dans Git? ".

448
VonC

Vous pouvez également essayer ce moyen facile:

git show <COMMIT>
291
Lakhan

git show affiche les modifications apportées à la dernière validation.

Équivalent à git show HEAD.

git show HEAD~1 vous renvoie 1 commit.

63
Adam Salma

Commencez par obtenir l'ID de validation en utilisant,

git log #to list all

Ou

git log -p -1 #last one commit id

Copier l'identifiant de validation.

Maintenant, nous utilisons deux méthodes pour lister les modifications d’un commit spécifique,

Méthode 1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

Méthode 2:

git show commit_id
For example: git show 1c6a600a
29
git show <commit_sha>

Cela vous montrera juste ce qu'il y a dans ce commit. Je pense que vous pouvez faire un intervalle en insérant simplement un espace entre deux commandes.

git show <beginning_sha> <ending_sha>

ce qui est très utile si vous changez souvent de base car vos journaux de fonctionnalités seront tous alignés.

25
Iwnnay

Extrait de la page de manuel de git-diff (1) :

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

Utilisez le troisième au milieu:

git diff [options] <parent-commit> <commit>

Également à partir de la même page de manuel, en bas, dans le section Exemples :

$ git diff HEAD^ HEAD      <3>

Comparez la version avant le dernier commit et le dernier commit.

Certes, il est libellé un peu déroutant, il serait moins déroutant que

Comparez le commit le plus récent avec le commit précédent.

25
user456814

Ce qui suit semble faire le travail; Je l'utilise pour montrer ce qui a été apporté par une fusion.

git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
21
MichaelMoser

Je fais habituellement:

git diff HEAD~1

Pour montrer les changements concernant le dernier commit. Si vous avez plus de commits, augmentez simplement le nombre 1 avec le nombre de diff que vous voulez voir.

13
Alex

Une autre possibilité:

git log -p COMMIT -1

11
John_West
git difftool COMMIT^ <commit hash>

est également possible si vous avez configuré votre difftool.

Voyez ici comment configurer difftool Ou la page de manuel ici

De plus, vous pouvez utiliser git diff-tree --no-commit-id --name-only -r <commit hash> pour voir quels fichiers ont été modifiés/validés dans un hachage Give commit

9
Chand Priyankara

Vous pouvez utiliser git diff HEAD HEAD^1 pour voir le diff avec le commit parent.

Si vous voulez seulement voir la liste des fichiers, ajoutez l'option --stat.

8
Irshu

Pour voir l'auteur et l'heure par commit, utilisez git show COMMIT. Ce qui donnera quelque chose comme ça:

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <[email protected]>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'Origin/your-feature'

Si vous voulez voir quels fichiers ont été modifiés, exécutez ce qui suit avec les valeurs de la ligne de fusion au-dessus de git diff --stat a2a2894 3a1ba8f.

Si vous voulez voir le diff actuel, lancez git --stat a2a2894 3a1ba8f

6
Nikita G.

J'aime la commande ci-dessous pour comparer un commit spécifique et son dernier commit:

git diff <commit-hash>^-

Exemple:

git diff cd1b3f485^-
5
starcwl

J'utilise Git version 2.6.1.Windows.1 sur Windows 10, il me fallait donc une légère modification de la réponse de Nevik (tilde au lieu de caret):

git diff COMMIT~ COMMIT

Une autre option est de citer le curseur:

git diff "COMMIT^" COMMIT
4
Juuso Ohtonen

Pour vérifier les modifications complètes:

  git diff <commit_Id_1> <commit_Id_2>

Pour vérifier uniquement les fichiers modifiés/ajoutés/supprimés:

  git diff <commit_Id_1> <commit_Id_2> --name-only

NOTE: Pour vérifier diff sans validation, vous n'avez pas besoin de mettre les identifiants de validation.

3
bit_cracker007

Cette commande vous donnera le commit-hash du parent Git:

git log -n 2 <commit-hash>

Après cela, git diff-tool <commit-hash> <parent-commit-hash>

Exemple:

bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <[email protected]>
Date:   Mon Jul 25 13:17:07 2016 +0530

CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.

commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <[email protected]>
Date:   Mon Jul 25 11:28:09 2016 +0530

The ratio of the height to width of the channel images are maintained.

Après ça

git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
2
souparno majumder