Comment vérifier si un dépôt Git est propre

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 efficacement si un dépôt Git est propre en utilisant la commande git status --porcelain. Cette commande fournit une sortie lisible par une machine, ce qui la rend idéale pour les scripts et les vérifications rapides de l'état du dépôt.

Vous explorerez la différence entre la commande standard git status et la version --porcelain, en observant comment la sortie change lorsque le dépôt est propre par rapport au cas où il contient des fichiers non suivis (untracked) ou modifiés. Cette expérience pratique vous montrera comment vérifier par programmation l'absence de modifications en attente.


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") subgraph Lab Skills git/add -.-> lab-560095{{"Comment vérifier si un dépôt Git est propre"}} git/status -.-> lab-560095{{"Comment vérifier si un dépôt Git est propre"}} end

Utiliser git status --porcelain pour vérifier si le dépôt est propre

Dans cette étape, nous allons découvrir une variation utile de la commande git status : git status --porcelain. Cette commande fournit une sortie propre et lisible par une machine, ce qui est idéal pour les scripts ou pour vérifier rapidement l'état du dépôt sans tout le texte supplémentaire.

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, exécutons à nouveau la commande standard git status pour voir l'état actuel de notre dépôt. Comme nous avons effectué un commit à l'étape précédente, le dépôt devrait être propre :

git status

Vous devriez voir une sortie similaire à celle-ci, indiquant que votre répertoire de travail est propre :

On branch master
nothing to commit, working tree clean

Maintenant, essayons la version "porcelain" :

git status --porcelain

Cette commande ne devrait produire aucune sortie si votre dépôt est propre. C'est la différence clé – elle n'affiche une sortie que pour les fichiers non suivis (untracked), modifiés ou mis en attente (staged). Cela la rend très utile pour vérifier rapidement s'il y a des modifications en attente.

Pourquoi est-ce utile ? Imaginez que vous écriviez un script qui doit savoir s'il y a des modifications non validées (uncommitted) avant d'effectuer une action. Analyser (parsing) la sortie normale de git status peut être difficile car elle est conçue pour être lue par des humains. La sortie de --porcelain est conçue pour les scripts, ce qui facilite la vérification des modifications par programmation.

Dans l'étape suivante, nous verrons comment la sortie change lorsque nous avons des fichiers non suivis ou modifiés.

Vérifier l'absence de fichiers non suivis ou modifiés

Dans cette étape, nous allons explicitement vérifier que la commande git status --porcelain ne produit aucune sortie lorsque le dépôt est propre. Cela renforce le concept selon lequel cette commande est conçue pour n'afficher que les modifications.

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

cd ~/project/my-time-machine

Maintenant, exécutez à nouveau la commande git status --porcelain. Comme nous n'avons effectué aucune modification depuis le dernier commit, il ne devrait y avoir aucune sortie.

git status --porcelain

Si votre terminal ne montre aucune sortie après avoir exécuté cette commande, cela signifie que votre répertoire de travail est propre et qu'il n'y a pas de fichiers non suivis (untracked) ou modifiés. C'est le comportement attendu pour un dépôt propre lorsque vous utilisez le drapeau --porcelain.

L'absence de sortie est un signal clair que Git ne voit rien de nouveau ou modifié qui doit être suivi ou validé (committed). C'est un moyen rapide et efficace de confirmer que vous partez d'un état propre avant d'apporter de nouvelles modifications ou d'effectuer d'autres opérations Git.

Dans l'étape suivante, nous allons introduire quelques modifications pour voir comment la sortie de --porcelain change.

Tester avec différents états de dépôt

Dans cette étape, nous allons apporter quelques modifications à notre dépôt pour voir comment git status --porcelain les signale. Cela vous aidera à comprendre les différents codes utilisés dans la sortie "porcelain".

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

cd ~/project/my-time-machine

Maintenant, créons un nouveau fichier non suivi (untracked). Nous l'appellerons notes.txt :

echo "Some random notes" > notes.txt

Exécutons à nouveau git status --porcelain :

git status --porcelain

Vous devriez maintenant voir une sortie similaire à celle-ci :

?? notes.txt

Le ?? indique que notes.txt est un fichier non suivi. Git voit le fichier, mais ne gère pas actuellement ses versions.

Ensuite, modifions le fichier message.txt que nous avons validé (committed) précédemment. Nous allons y ajouter une autre ligne :

echo "Hello again, Future Me" >> message.txt

L'opérateur >> ajoute le texte à la fin du fichier existant, au lieu de l'écraser.

Maintenant, exécutons git status --porcelain une fois de plus :

git status --porcelain

Vous devriez voir une sortie similaire à celle-ci :

 M message.txt
?? notes.txt

Le M indique que message.txt a été modifié. L'espace avant le M signifie que la modification se trouve dans le répertoire de travail mais n'a pas encore été mise en attente (staged). Le ?? pour notes.txt reste car le fichier est toujours non suivi.

Enfin, mettons en attente le fichier message.txt modifié en utilisant git add :

git add message.txt

Et exécutons git status --porcelain une dernière fois :

git status --porcelain

La sortie devrait maintenant ressembler à ceci :

M  message.txt
?? notes.txt

Le M se trouve maintenant dans la première colonne, indiquant que message.txt a été mis en attente pour un commit. L'espace dans la deuxième colonne signifie qu'il n'y a pas de modifications supplémentaires dans le répertoire de travail depuis qu'il a été mis en attente. notes.txt est toujours non suivi.

Comprendre ces codes (?? pour les fichiers non suivis, M dans la deuxième colonne pour les fichiers modifiés mais non mis en attente, M dans la première colonne pour les modifications mises en attente) est essentiel pour interpréter rapidement la sortie de git status --porcelain.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si un dépôt Git est propre en utilisant la commande git status --porcelain. Nous avons découvert que cette commande fournit une sortie lisible par machine, qui est vide lorsque le répertoire de travail est propre. Cela contraste avec la sortie standard de git status, qui fournit des informations lisibles par l'homme même lorsque le dépôt est propre.

Nous avons pratiqué l'exécution de git status --porcelain sur un dépôt propre et avons observé qu'elle ne produisait aucune sortie, confirmant son utilité pour les scripts et les vérifications rapides des modifications en attente.