Comment vérifier si un fichier a été modifié dans un commit spécifique

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si un fichier spécifique a été modifié dans un commit Git particulier. Nous allons explorer différentes commandes Git pour y parvenir.

Vous commencerez par utiliser la commande git show --name-only pour afficher les fichiers modifiés dans un commit. Ensuite, vous apprendrez à utiliser git diff-tree pour examiner les modifications des fichiers entre les commits. Enfin, vous testerez ces méthodes avec des fichiers non modifiés pour confirmer leur comportement.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BasicOperationsGroup -.-> git/rm("Remove Files") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560034{{"Comment vérifier si un fichier a été modifié dans un commit spécifique"}} git/status -.-> lab-560034{{"Comment vérifier si un fichier a été modifié dans un commit spécifique"}} git/diff -.-> lab-560034{{"Comment vérifier si un fichier a été modifié dans un commit spécifique"}} git/rm -.-> lab-560034{{"Comment vérifier si un fichier a été modifié dans un commit spécifique"}} git/log -.-> lab-560034{{"Comment vérifier si un fichier a été modifié dans un commit spécifique"}} end

Utilisation de git show --name-only pour un commit

Dans cette étape, nous allons apprendre à utiliser la commande git show pour obtenir plus de détails sur un commit spécifique. Alors que git log nous montre un résumé des commits, git show nous permet de jeter un coup d'œil à l'intérieur d'une seule capsule temporelle.

Utilisons git show pour voir les détails de notre premier commit. Nous allons également ajouter l'option --name-only pour ne voir que les noms des fichiers qui ont été modifiés dans ce commit.

Tout d'abord, assurez-vous que vous êtes dans le répertoire my-time-machine :

cd ~/project/my-time-machine

Maintenant, exécutez la commande git show avec l'option --name-only. Vous pouvez utiliser HEAD pour faire référence au dernier commit :

git show --name-only HEAD

Vous devriez voir une sortie similaire à celle-ci :

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

message.txt

Décortiquons la sortie :

  • La première partie est similaire à ce que vous avez vu avec git log, montrant les détails du commit (ID du commit, auteur, date et message).
  • La dernière ligne, message.txt, est la sortie de l'option --name-only. Elle nous indique que le fichier message.txt a été modifié dans ce commit.

La commande git show est incroyablement utile pour inspecter des commits individuels. Vous pouvez l'utiliser pour voir exactement quelles modifications ont été apportées dans un commit spécifique, quels fichiers ont été affectés et le message de commit associé à ces modifications. Cela vous aide à comprendre en détail l'historique de votre projet.

Dans l'étape suivante, nous allons explorer une autre façon de voir les modifications des fichiers entre les commits en utilisant git diff-tree.

Exécution de git diff-tree pour voir les modifications de fichiers

Dans cette étape, nous allons explorer une autre commande pour voir quels fichiers ont été modifiés dans un commit : git diff-tree. Cette commande est souvent utilisée dans les scripts et l'automatisation, mais elle est également utile pour comprendre comment Git suit les modifications.

Assurez-vous que vous êtes toujours dans le répertoire ~/project/my-time-machine.

Nous avons besoin de l'ID du commit de notre premier commit. Vous pouvez l'obtenir en exécutant git log --oneline :

git log --oneline

Vous devriez voir une sortie comme celle-ci (votre ID de commit sera différent) :

a1b2c3d (HEAD -> master) Send a message to the future

Copiez les 7 premiers caractères de l'ID du commit (par exemple, a1b2c3d).

Maintenant, exécutez la commande git diff-tree. Nous allons utiliser l'option -r pour afficher les modifications de manière récursive et l'option --name-only pour n'afficher que les noms des fichiers. Remplacez YOUR_COMMIT_ID par l'ID de commit que vous avez copié :

git diff-tree -r --name-only YOUR_COMMIT_ID

Par exemple, si votre ID de commit était a1b2c3d, vous exécuteriez :

git diff-tree -r --name-only a1b2c3d

Vous devriez voir une sortie comme celle-ci :

message.txt

Cette commande nous montre également que message.txt était le fichier modifié dans ce commit.

Alors que git show --name-only est souvent plus pratique pour une utilisation interactive, git diff-tree est une commande puissante pour comparer des arbres (instantanés de votre projet) et est fréquemment utilisée dans les workflows et les scripts Git plus avancés. Comprendre que Git suit les modifications entre ces instantanés est essentiel pour maîtriser le contrôle de version.

Tester les fichiers non modifiés

Dans cette étape finale, nous allons confirmer que Git identifie correctement les fichiers qui n'ont pas été modifiés depuis le dernier commit. Cela renforce le concept selon lequel Git ne suit que les modifications.

Assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine.

Exécutez à nouveau la commande git status :

git status

Vous devriez voir une sortie comme celle-ci :

On branch master
nothing to commit, working tree clean

Ce message nous indique qu'il n'y a pas de modifications dans notre répertoire de travail qui nécessitent d'être validées (commitées). Git constate que le fichier message.txt est exactement le même que lors du dernier commit.

Maintenant, créons un nouveau fichier non suivi (untracked) pour voir comment Git réagit :

echo "This is a temporary file" > temp.txt

Exécutez à nouveau git status :

git status

Vous devriez maintenant voir :

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        temp.txt

nothing added to commit but untracked files present (use "git add" to track)

Git identifie correctement temp.txt comme un fichier non suivi car nous n'avons pas encore demandé à Git de le suivre en utilisant git add. Cela démontre que Git est conscient des fichiers dans votre répertoire, mais ne suit activement que ceux que vous avez ajoutés au dépôt.

Enfin, nettoyons le fichier temporaire :

rm temp.txt

Exécutez git status une dernière fois :

git status

Vous devriez revenir à l'état "nothing to commit, working tree clean".

Cette étape met en évidence comment Git vous aide à gérer votre projet en montrant clairement quels fichiers ont été modifiés, quels sont préparés (staged) pour le prochain commit et quels sont non suivis. Cette information de statut claire est essentielle pour un contrôle de version efficace.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si un fichier a été modifié dans un commit spécifique en utilisant Git. Nous avons commencé par utiliser la commande git show --name-only pour afficher les détails d'un commit et lister uniquement les noms des fichiers qui ont été modifiés. Cela a fourni un moyen rapide de voir quels fichiers ont été affectés par un commit particulier.

Nous avons ensuite exploré la commande git diff-tree comme une autre méthode pour identifier les modifications de fichiers au sein d'un commit. Bien que souvent utilisée dans les scripts, comprendre git diff-tree aide à saisir comment Git suit les modifications. Ces commandes sont des outils précieux pour examiner l'historique d'un projet et comprendre les modifications introduites dans des commits individuels.