Comment voir les changements dans un commit Git?

Quand je fais git diff COMMIT je vois les changements entre ce commit et HEAD (pour autant que je sache), mais j’aimerais voir les modifications apscopes par ce commit unique.

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

Pour voir le diff pour un hachage COMMIT particulier:

git diff COMMIT~ COMMIT vous montrera la différence entre l’ancêtre de COMMIT et le COMMIT . Voir les pages de manuel relatives à git diff pour plus de détails sur la commande et gitrevisions concernant la notation et ses amis.

Alternativement, git show COMMIT fera quelque chose de très similaire. (Les données de la validation, y compris son diff – mais pas pour les validations de fusion). Voir la page de manuel de git show .

Comme mentionné dans ” raccourci pour 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, vous auriez besoin de (pour vous concentrer uniquement sur diff):

 git show --color --pretty=format:%b $COMMIT 

Le paramètre COMMIT est un commit-ish :

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

Voir gitrevision “SPÉCIFICATION DES RÉVISIONS” pour faire référence à un commit-ish.
Voir aussi ” Que veut dire arbre-ish dans Git? “.

Vous pouvez également essayer cette méthode simple:

 git show  

git show montre les modifications apscopes lors de la validation la plus récente.

Équivalent à git show HEAD .

git show HEAD~1 vous ramène 1 commit.

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

 git diff [options] [] [--] […] git diff [options] --cached [] [--] […] git diff [options]   [--] […] git diff [options]   git diff [options] [--no-index] [--]   

Utilisez le 3ème au milieu:

 git diff [options]   

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

 $ git diff HEAD^ HEAD <3> 

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

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

Comparez le commit le plus récent avec le commit avant lui.

Tout d’abord, obtenez l’identifiant de validation en utilisant,

 git log #to list all 

Ou

 git log -p -1 #last one commit id 

Copier l’ID de validation

Maintenant, nous utilisons deux méthodes pour répertorier 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 

Le suivant semble faire le travail; Je l’utilise pour montrer ce qui a été apporté par une fusion.

 git whatchanged -m -n 1 -p  

Une autre possibilité:

git log -p COMMIT -1

 git difftool COMMIT^  

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

Voir ici comment configurer difftool Ou la page de manuel ici

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

Pour voir l’auteur et l’heure en validant, utilisez git show COMMIT . Ce qui aboutira à quelque chose comme ceci:

 commit 13414df70354678b1b9304ebe4b6d204810f867e Merge: a2a2894 3a1ba8f Author: You  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 Merge ci-dessus git diff --stat a2a2894 3a1ba8f .

Si vous voulez voir le diff réel, lancez git --stat a2a2894 3a1ba8f

J’utilise la version 2.6.1.windows.1 de Git sur Windows 10, alors j’avais besoin d’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 caret:

 git diff "COMMIT^" COMMIT 

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

Si vous voulez seulement voir la liste des fichiers, ajoutez l’option --stat dans celle-ci.

 git show  

Cela vous montrera juste ce qu’il y a dans ce commit. Je pense que vous pouvez le faire en mettant simplement un espace entre deux commit shas.

 git show   

ce qui est très utile si vous refixez souvent parce que vos journaux de fonctions seront tous alignés.

Cette commande vous donnera le hash de validation du parent Git:

 git log -n 2  

Après cela, git diff-tool

Exemple:

 bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3 commit 7f65b9a9d3820525766fcba285b3c678e889fe3b Author: souparno  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  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 

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

 git diff ^- 

Exemple:

 git diff cd1b3f485^- 

En cas de vérification du changement de source dans une vue graphique,

 $gitk (Mention your commit id here) 

par exemple:

 $gitk HEAD~1