Git & GitHub : Suivre les Modifications (Working Directory et Staging Area)

Découvrez comment gérer et suivre les modifications de votre code entre le Working Directory et la Staging Area.

Icône de calendrier
Débutant
5 chapitres

Le suivi des modifications du code source d’un projet est une tâche élémentaire pour versionner correctement son code. Focus sur le working directory et la staging area.

Working Directory : l’espace de travail

Le dossier dans lequel nous avons initialisé un dépôt Git (📂 .git) est appelé « working directory ».

C’est dans ce dossier que nous allons procéder à la création, modification et suppression des fichiers/dossiers constituant le code source de notre projet.

Voici un exemple de working directory nommé 📁 MonProjet :

📁 MonProjet
├── 📁 .git
├── 📁 js
│   ├── 📄 app.js
│   └── ...
├── 📁 css
│   ├── 📄 _variables.css
│   ├── 📄 style.css
│   └── ...
├── 📄 index.html
├── 📄 .gitignore
└── 📄 readme.md

Une fois initialisé (présence d’un fichier 📁 .git), Git surveille en permanence les fichiers dans votre répertoire de travail (working directory).

Lorsqu’un nouveau fichier est créé dans votre espace de travail, Git le marque comme « non suivi » (untracked).

Staging Area : une zone tampon

Comprendre la staging area

La zone de transit (« staging area ») est un concept essentiel de Git.

Il s’agit d’une zone tampon rassemblant les fichiers que l’on souhaite synchroniser avec le dépôt distant.

Lorsque vous travaillez sur un projet et avez, par exemple, terminé de développer une fonctionnalité, vous pourriez souhaiter envoyer ces modifications sur le dépôt distant afin de les sauvegarder et de les rendre accessibles par d’autres développeurs.

Pour cela, il faudra ajouter les modifications associées à la zone de transit. Une modification peut concerner un fichier ou un dossier.

Il peut s’agir d’une opération de :

  • Création
  • 🔄️ Modification
  • Suppression
Schéma Git : comprendre la Staging Area
Schéma Git : comprendre la Staging Area

Dans le schéma ci-dessus, nous :

  • Modifions un fichier 📄 index.html
  • Supprimons un fichier 📄 app.js
  • Créons un fichier 📄 style.css

Après cela, nous ajoutons nos 3 modifications à la staging area. Cela permet à Git de prendre en compte leur nouvel état (création, mise à jour ou suppression).

Ajouter des fichiers à la staging area

Pour ajouter des fichiers à la staging area, on utilise la commande git add, suivie du nom des fichiers en question.

copié !
git add <fichier1> <fichier2> ...

Cette commande confère un contrôle précis sur les modifications que vous souhaitez inclure dans chaque « version » du projet.

Vous pouvez par exemple choisir de n’indexer que certaines modifications tout en laissant d’autres modifications non indexées dans le répertoire de travail. Cela vous permet de structurer votre historique de manière logique et de créer des versions cohérentes et significatives pour votre projet.

Si vous souhaitez ajouter à la staging area l’état de l’ensemble des fichiers créés, modifiés ou supprimés dans le répertoire du projet, vous pouvez exécuter la commande suivante :

copié !
git add .

L’utilisation de git add . est utile lorsque vous avez apporté des modifications à plusieurs fichiers et que vous voulez tous les inclure dans la staging area.

Sortir des fichiers de la staging area

Si vous souhaitez sortir des fichiers ajoutés par erreur dans la staging area, Git vous propose la commande git restore --staged :

copié !
git restore --staged <fichier1> <fichier2> ...

Si vous souhaitez sortir tous les fichiers ayant été ajoutés dans la staging area, vous pouvez exécuter la commande git restore --staged . :

copié !
git restore --staged .

Vérifier l’état du dépôt Git

Il est important d’avoir régulièrement un regard sur l’état de votre dépôt Git. Pour cela, Git vous propose d’afficher l’état actuel du working directory par rapport à la staging area en exécutant la commande git status :

copié !
git status

La commande git status fournit les informations suivantes :

1. Branche courante

La branche courante indique la branche sur laquelle vous vous trouvez actuellement.

La branche courante du dépôt représente la ligne de développement sur laquelle on est en train de travailler. Par défaut, cette dernière s’appelle main ou master (selon la version de Git).

2. Fichiers non suivis (untracked)

Les fichiers non suivis ne sont pas encore sous la gestion de Git. Ils existent dans le répertoire de travail mais n’ont pas été ajoutés à la staging area. Vous pouvez les ajouter avec git add.

Il s’agit souvent de fichiers nouvellement créés.

Ils sont marqués par ?? dans la sortie de git status -s.

3. Fichiers indexés (staged)

Les fichiers indexés représentent les fichiers qui ont été ajoutés à la staging area.

Ils sont marqués par A dans la sortie de git status -s.

4. Fichiers non indexés (unstaged)

Les fichiers non indexés représentent les fichiers suivis par Git qui ont été modifiés/supprimés, mais ces modifications n’ont pas encore été ajoutées à la staging area. Vous pouvez les ajouter avec git add.

Ils sont marqués par M ou D dans la sortie de git status -s.