Comment visualiser les modifications d'un commit Git spécifique

GitBeginner
Pratiquer maintenant

Introduction

Git est un système de contrôle de version puissant qui aide les développeurs à suivre les modifications, à collaborer et à gérer leur base de code efficacement. Une compétence fondamentale en Git est la capacité d'inspecter l'historique du projet pour voir quelles modifications ont été apportées, quand et par qui. Dans ce laboratoire, vous apprendrez à visualiser les modifications introduites dans un commit Git spécifique. Ceci est essentiel pour comprendre l'évolution de votre projet, examiner le code et résoudre les problèmes.

Exploration de l'historique des commits

Avant de pouvoir visualiser les modifications d'un commit spécifique, vous devez d'abord trouver ce commit. La commande git log est utilisée pour afficher l'historique des commits d'un dépôt. Pour ce laboratoire, un dépôt Git d'exemple a été créé pour vous à l'emplacement ~/project/git-demo.

Tout d'abord, naviguez vers le répertoire du projet. Toutes les commandes de ce laboratoire doivent être exécutées à partir de ce répertoire.

cd ~/project/git-demo

Maintenant, utilisez la commande git log avec l'option --oneline pour voir une vue compacte de l'historique des commits. Cela vous montrera une liste de tous les commits, chacun avec son hash de commit unique et son message de commit.

git log --oneline

Vous devriez voir une sortie similaire à celle-ci. Les hashes de commit sur votre écran seront différents, mais les messages seront les mêmes.

a1b2c3d (HEAD -> master) Add application file
e4f5g6h Update README with project description
i7j8k9l Initial commit: Add README.md

Chaque ligne représente un commit. La chaîne de 7 caractères au début de chaque ligne (par exemple, a1b2c3d) est une version abrégée du hash du commit, qui identifie de manière unique le commit. Vous utiliserez ces hashes dans les étapes suivantes pour inspecter des commits spécifiques.

Visualisation des modifications d'un commit spécifique

Maintenant que vous avez une liste de commits, vous pouvez utiliser la commande git show pour visualiser les détails et les modifications d'un commit spécifique. Cette commande affiche les métadonnées du commit (auteur, date, message) et le "diff", qui met en évidence les lignes exactes qui ont été ajoutées ou supprimées.

Inspectons le deuxième commit, qui a le message "Update README with project description". Trouvez son hash de commit dans la sortie de l'étape précédente.

Copiez le hash et utilisez-le avec git show. Remplacez <commit-hash> par le hash réel de votre terminal.

git show <commit-hash>

Par exemple, si le hash de ce commit était e4f5g6h, vous exécuteriez :

git show e4f5g6h

La sortie ressemblera à ceci :

commit e4f5g6h1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7
Author: LabEx <labex@example.com>
Date:   ...

    Update README with project description

diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 ## My Project
+
+This is a simple project to demonstrate Git.

Analysons la sortie :

  • Métadonnées du commit : Les premières lignes affichent le hash complet du commit, l'auteur, la date et le message du commit.
  • Section Diff : La partie commençant par diff --git est le "diff".
    • --- a/README.md et +++ b/README.md indiquent les versions "avant" et "après" du fichier.
    • Les lignes précédées de + sont les lignes qui ont été ajoutées dans ce commit.
    • Les lignes précédées de - (non présentes dans cet exemple) sont les lignes qui ont été supprimées.

Visualisation des modifications d'un fichier spécifique dans un commit

Parfois, un commit peut modifier plusieurs fichiers, mais vous ne vous intéressez qu'aux modifications d'un fichier spécifique. Vous pouvez indiquer à git show de n'afficher que les modifications d'un fichier particulier en ajoutant le chemin du fichier à la fin de la commande.

Examinons le commit le plus récent, qui a le message "Add application file". Ce commit a ajouté le fichier app.py.

Tout d'abord, obtenez le hash du dernier commit à partir de votre sortie git log --oneline. Ensuite, exécutez git show avec ce hash, suivi de -- et du nom de fichier app.py.

git show app.py < latest-commit-hash > --

Par exemple, si le hash du dernier commit est a1b2c3d, la commande serait :

git show a1b2c3d -- app.py

La sortie sera maintenant limitée aux modifications apportées à app.py dans ce commit.

commit a1b2c3d...
Author: LabEx <labex@example.com>
Date:   ...

    Add application file

diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")

Notez que la sortie est beaucoup plus courte et ne contient que le diff pour app.py. La ligne new file mode 100644 indique que ce fichier a été créé dans ce commit.

Comparaison de deux commits

Alors que git show sert à visualiser les modifications au sein d'un seul commit, vous pouvez utiliser git diff pour voir les modifications cumulées entre deux commits quelconques. Ceci est utile pour voir tout ce qui a changé entre deux points dans le temps, comme entre deux versions (releases).

Comparons le commit initial et le dernier commit pour voir toutes les modifications apportées au projet jusqu'à présent. Vous aurez besoin des hashes des commits pour le premier commit ("Initial commit: Add README.md") et le dernier commit ("Add application file").

Utilisez la commande git diff avec les deux hashes.

git diff <first-commit-hash> <last-commit-hash>

Par exemple, si votre premier hash de commit est i7j8k9l et votre dernier est a1b2c3d :

git diff i7j8k9l a1b2c3d

La sortie montrera un diff combiné de toutes les modifications qui se sont produites entre ces deux commits.

diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 ## My Project
+
+This is a simple project to demonstrate Git.
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")

Cette sortie montre à la fois la mise à jour de README.md et la création de app.py, vous donnant une image complète de l'évolution du projet entre ces deux points.

Résumé

Dans ce laboratoire, vous avez appris à naviguer dans l'historique d'un dépôt Git et à inspecter les modifications. Vous avez pratiqué l'utilisation de git log pour lister les commits, git show pour visualiser les détails et les modifications au sein d'un seul commit (à la fois pour le commit entier et pour un fichier spécifique), et git diff pour comparer les différences entre deux commits. Ces commandes sont fondamentales pour comprendre les changements de code, déboguer et collaborer efficacement dans tout projet basé sur Git.