Comment vérifier si un fichier a été modifié dans Git

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 les modifications dans votre dépôt Git. Nous allons explorer les commandes Git essentielles git status et git diff pour identifier les fichiers modifiés et examiner les modifications spécifiques apportées à ces derniers.

Grâce à des exercices pratiques, vous allez pratiquer l'utilisation de git status pour voir quels fichiers ont été modifiés et de git diff pour afficher les différences ligne par ligne entre l'état actuel de vos fichiers et la dernière version validée (committed). Vous apprendrez également comment Git indique les fichiers qui n'ont pas été modifiés.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") subgraph Lab Skills git/add -.-> lab-560022{{"Comment vérifier si un fichier a été modifié dans Git"}} git/status -.-> lab-560022{{"Comment vérifier si un fichier a été modifié dans Git"}} git/diff -.-> lab-560022{{"Comment vérifier si un fichier a été modifié dans Git"}} end

Exécuter git status pour voir les fichiers modifiés

Dans cette étape, nous allons apprendre à utiliser git status pour voir les modifications que nous avons apportées à notre projet.

Tout d'abord, assurons-nous que nous sommes dans le répertoire de notre projet. Ouvrez votre terminal et tapez :

cd ~/project/my-time-machine

Maintenant, créons un nouveau fichier. Nous allons ajouter une simple ligne à notre fichier message.txt :

echo "P.S. Hope you're doing well!" >> message.txt

Le symbole >> ajoute le texte à la fin du fichier existant, au lieu de le remplacer.

Vérifions le contenu du fichier pour confirmer la modification :

cat message.txt

Vous devriez voir :

Hello, Future Me
P.S. Hope you're doing well!

Maintenant, voyons comment Git voit cette modification. Exécutez la commande git status :

git status

Vous devriez voir une sortie similaire à celle-ci :

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Git nous indique que message.txt a été "modifié". Cela signifie que Git sait que le fichier a été modifié depuis le dernier commit, mais les modifications n'ont pas encore été ajoutées à la zone de préparation (staging area).

Comprendre git status est crucial car il vous indique l'état actuel de votre répertoire de travail et de la zone de préparation. C'est votre outil principal pour savoir quelles modifications vous avez apportées et ce qui est prêt à être validé (committed).

Utiliser git diff pour examiner les modifications

Dans l'étape précédente, nous avons vu que git status nous indique quels fichiers ont été modifiés. Mais que faire si nous voulons voir exactement quelles modifications ont été apportées ? C'est là que git diff entre en jeu !

git diff vous montre les différences entre votre répertoire de travail et le dernier commit (ou la zone de préparation, selon la manière dont vous l'utilisez). C'est comme comparer la version actuelle de votre fichier à la version de votre dernier point de sauvegarde.

Essayons-le. Assurez-vous que vous êtes toujours dans le répertoire ~/project/my-time-machine et exécutez :

git diff

Vous devriez voir une sortie similaire à celle-ci :

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+P.S. Hope you're doing well!

Décortiquons cette sortie :

  • diff --git a/message.txt b/message.txt : Cette ligne nous indique que Git compare deux versions du fichier message.txt.
  • index a1b2c3d..e4f5g6h 100644 : Ce sont des informations techniques sur les versions du fichier.
  • --- a/message.txt : Cela indique la version originale du fichier (avant vos modifications).
  • +++ b/message.txt : Cela indique la nouvelle version du fichier (avec vos modifications).
  • @@ -1 +1,2 @@ : C'est ce qu'on appelle un "hunk header". Il vous indique où se trouvent les modifications dans le fichier. -1 signifie qu'une ligne a été supprimée à partir de la ligne 1 (dans le fichier original), et +1,2 signifie que deux lignes sont présentes à partir de la ligne 1 (dans le nouveau fichier).
  • +P.S. Hope you're doing well! : Les lignes commençant par un + indiquent les lignes qui ont été ajoutées. Si vous aviez supprimé une ligne, elle commencerait par un -.

git diff est un outil incroyablement puissant. Avant de valider vos modifications, il est toujours une bonne idée d'exécuter git diff pour revoir exactement ce que vous êtes sur le point de sauvegarder. Cela permet d'éviter de valider accidentellement des modifications indésirables.

Appuyez sur q pour quitter la vue des différences et revenir à la ligne de commande.

Tester les fichiers non modifiés

Dans les étapes précédentes, nous avons vu comment git status et git diff fonctionnent lorsqu'un fichier a été modifié. Mais que se passe-t-il si nous exécutons ces commandes lorsqu'il n'y a pas de modifications ?

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

Tout d'abord, exécutez git status :

git status

Étant donné que nous n'avons apporté aucune modification depuis la dernière fois que nous avons vérifié l'état, vous devriez voir la même sortie que précédemment, indiquant que message.txt est modifié mais non préparé (staged) :

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Maintenant, essayons d'exécuter git diff à nouveau :

git diff

Vous devriez voir la même sortie de comparaison (diff) que précédemment, montrant la différence entre le fichier actuel et le dernier commit :

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+P.S. Hope you're doing well!

Cela confirme que git status et git diff vous montrent l'état actuel de votre répertoire de travail par rapport au dernier commit, indépendamment du nombre de fois que vous exécutez les commandes sans apporter de nouvelles modifications.

Maintenant, préparons (stage) les modifications que nous avons apportées à message.txt en utilisant git add :

git add message.txt

Exécutez git status à nouveau :

git status

La sortie changera pour montrer que les modifications sont maintenant préparées (staged) :

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   message.txt

Remarquez que git status montre maintenant "Changes to be committed". Cela signifie que les modifications sont dans la zone de préparation (staging area), prêtes pour le prochain commit.

Et git diff maintenant ? Essayons-le :

git diff

Cette fois, git diff n'affichera aucune sortie. Pourquoi ? Parce que lorsque vous exécutez git diff sans arguments, il compare votre répertoire de travail à la zone de préparation (staging area). Étant donné que nous venons d'ajouter les modifications à la zone de préparation, le répertoire de travail et la zone de préparation sont identiques.

Pour voir la différence entre la zone de préparation et le dernier commit, vous utiliseriez git diff --staged. Essayons cela :

git diff --staged

Cela affichera la comparaison (diff) des modifications qui sont actuellement dans la zone de préparation, qui est la ligne que nous avons ajoutée :

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+P.S. Hope you're doing well!

Comprendre la différence entre git diff (répertoire de travail vs. zone de préparation) et git diff --staged (zone de préparation vs. dernier commit) est un concept clé dans Git. Cela vous aide à gérer vos modifications avant de les valider (committer).

Appuyez sur q pour quitter la vue de comparaison (diff) si elle apparaît.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier les modifications dans un dépôt Git. Nous avons commencé par utiliser git status pour identifier quels fichiers ont été modifiés dans le répertoire de travail depuis le dernier commit. Cette commande fournit un résumé de l'état actuel du dépôt, indiquant les fichiers modifiés, préparés (staged) et non suivis (untracked).

Ensuite, nous avons exploré git diff pour examiner les modifications spécifiques apportées à l'intérieur d'un fichier modifié. Cette commande montre une comparaison ligne par ligne entre la version actuelle du fichier dans le répertoire de travail et la version du dernier commit, en mettant en évidence les ajouts et les suppressions. Enfin, nous avons confirmé que git status signale correctement l'absence de modifications lorsqu'aucune modification n'a été apportée aux fichiers du dépôt.