Comment vérifier si un dépôt Git a des modifications non validées (uncommitted)

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 s'il existe des modifications non validées (uncommitted changes) dans un dépôt Git. Nous allons explorer la commande essentielle git status pour afficher l'état global de votre répertoire de travail et des modifications préparées (staged changes).

En outre, vous découvrirez comment utiliser la commande git diff pour examiner les modifications spécifiques apportées à vos fichiers, vous permettant de voir exactement ce qui a été modifié avant de valider (commit) les changements. Enfin, nous aborderons brièvement la combinaison des vérifications des modifications préparées et non préparées.


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-560091{{"Comment vérifier si un dépôt Git a des modifications non validées (uncommitted)"}} git/status -.-> lab-560091{{"Comment vérifier si un dépôt Git a des modifications non validées (uncommitted)"}} git/diff -.-> lab-560091{{"Comment vérifier si un dépôt Git a des modifications non validées (uncommitted)"}} end

Exécuter git status pour afficher les modifications

Dans cette étape, nous allons apprendre à utiliser la commande git status pour voir l'état actuel de notre dépôt Git. Cette commande est votre meilleur allié lorsque vous travaillez avec Git, car elle vous indique exactement ce qui se passe.

Tout d'abord, assurez-vous que vous êtes dans le répertoire my-time-machine. Vous pouvez le faire en tapant :

cd ~/project/my-time-machine

Maintenant, exécutons la commande git status :

git status

Vous devriez voir une sortie similaire à celle-ci :

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Décortiquons cette sortie :

  • On branch master : Cela vous indique que vous êtes actuellement sur la branche master. Les branches sont comme des différentes lignes temporelles dans votre projet.
  • Your branch is up to date with 'origin/master' : Cela indique que votre branche locale master est synchronisée avec la branche distante origin/master (nous apprendrons plus sur les dépôts distants plus tard).
  • nothing to commit, working tree clean : C'est l'état idéal ! Cela signifie qu'il n'y a pas de modifications dans votre projet qui n'aient pas été enregistrées (validées) dans l'historique Git.

La commande git status est cruciale car elle vous aide à comprendre quels fichiers ont été modifiés, quels sont nouveaux et non suivis (untracked), et quelles modifications sont prêtes à être validées. C'est la première commande que vous devriez exécuter après avoir apporté des modifications à votre projet pour voir comment Git perçoit ces modifications.

Utiliser git diff pour examiner les modifications

Dans cette étape, nous allons apprendre à utiliser la commande git diff pour voir les modifications exactes que vous avez apportées à vos fichiers. Alors que git status vous indique quels fichiers ont été modifiés, git diff vous montre ce qui a été modifié dans ces fichiers.

Tout d'abord, modifions le fichier message.txt. Assurez-vous que vous êtes toujours dans le répertoire ~/project/my-time-machine.

Ouvrez le fichier avec l'éditeur nano :

nano message.txt

Ajoutez une nouvelle ligne au fichier, par exemple :

Hello, Future Me
This is a new line.

Appuyez sur Ctrl + X pour quitter, puis sur Y pour enregistrer, et sur Entrée pour confirmer le nom du fichier.

Maintenant que nous avons modifié le fichier, voyons comment Git perçoit ce changement en utilisant git status :

git status

Vous devriez voir une sortie indiquant que message.txt a été modifié :

On branch master
Your branch is up to date with 'origin/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 est modifié et que les modifications ne sont pas préparées pour un commit. Cela signifie que nous avons modifié le fichier, mais que nous n'avons pas encore indiqué à Git de préparer ces modifications pour un commit.

Maintenant, utilisons git diff pour voir les modifications spécifiques :

git diff

Vous verrez 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
+This is a new line.

Comprenons cette sortie :

  • Les lignes commençant par --- et +++ montrent le fichier original (a/message.txt) et le nouveau fichier (b/message.txt).
  • La ligne commençant par @@ est appelée un "en-tête de bloc" (hunk header). Elle indique où se trouvent les modifications dans le fichier. -1 +1,2 signifie qu'à partir de la ligne 1 du fichier original, 1 ligne a été supprimée, et à partir de la ligne 1 du nouveau fichier, 2 lignes ont été ajoutées.
  • Les lignes commençant par - montrent les lignes qui ont été supprimées.
  • Les lignes commençant par + montrent les lignes qui ont été ajoutées.

Dans notre cas, nous avons ajouté une ligne, donc vous voyez une ligne commençant par +.

La commande git diff est incroyablement utile pour passer en revue vos modifications avant de les préparer (stager) ou de les valider (commit). Elle vous aide à détecter les erreurs et à vous assurer que vous n'incluez que les modifications souhaitées dans vos commits.

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

Combiner les vérifications des modifications préparées (staged) et non préparées (unstaged)

Dans cette étape, nous allons explorer comment Git gère les modifications préparées (staged) et non préparées (unstaged) et comment git diff peut être utilisé pour les examiner.

Rappelez-vous que dans l'étape précédente, nous avons modifié le fichier message.txt mais n'avons pas préparé (staged) les modifications. Préparons-les maintenant en utilisant git add :

git add message.txt

Maintenant, exécutons à nouveau git status :

git status

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

On branch master
Your branch is up to date with 'origin/master'.

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

Git affiche maintenant Changes to be committed, indiquant que les modifications apportées à message.txt sont dans la zone de préparation (staging area), prêtes pour le prochain commit.

Que se passe-t-il si nous exécutons git diff maintenant ?

git diff

Vous pouvez être surpris de ne voir aucune sortie. C'est parce que git diff montre par défaut la différence entre votre répertoire de travail (working directory) et la zone de préparation (staging area). Comme les modifications dans notre répertoire de travail sont maintenant les mêmes que celles dans la zone de préparation (parce que nous venons de les ajouter), il n'y a pas de différence à afficher.

Pour voir la différence entre la zone de préparation et le dernier commit, nous devons utiliser une autre forme de la commande git diff :

git diff --staged

Ou, de manière équivalente :

git diff --cached

Les deux commandes font la même chose. Exécutons-la :

git diff --staged

Maintenant, vous devriez voir la différence entre les modifications préparées 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
+This is a new line.

Cela montre exactement la modification que nous avons apportée : l'ajout de la ligne "This is a new line.".

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 fondamental pour utiliser Git efficacement. Cela vous permet d'examiner attentivement vos modifications à différents stades avant de faire un commit permanent.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier les modifications non validées (uncommitted) dans un dépôt Git. Nous avons commencé par utiliser la commande git status pour obtenir une vue d'ensemble de l'état du dépôt, y compris la branche actuelle et la présence de fichiers modifiés, nouveaux ou non suivis (untracked). Cette commande est essentielle pour comprendre quelles modifications sont présentes.

Ensuite, nous avons exploré la commande git diff pour examiner les modifications spécifiques apportées aux fichiers. Alors que git status nous indique quels fichiers ont été modifiés, git diff montre les différences ligne par ligne, nous permettant de passer en revue le contenu de nos modifications avant de les préparer (stager) ou de les valider (commit).