GitVoici le cinquième volet de la formation Git. Dans mon précédent article, nous avons vu l’initialisation d’un dépôt Git, l’ajout d’un fichier à l’index de Git et sa validation sous forme de commit. Aujourd’hui nous allons nous pencher plus en détail sur ce que cela signifie.

Travailler avec Git

Rappelez-vous que lorsque vous initialisez un dépôt Git, les informations sont stockées dans un répertoire .git à la racine du projet. Le répertoire où vous créez et éditez des fichiers, c’est le répertoire de travail (working directory).

ImportantNon, ne vous mettez pas à créer et éditer des fichiers à l’intérieur du répertoire .git, c’est une très mauvaise idée. Continuez à considérer .git et son contenu comme une boîte noire et évitez d’y toucher.

Le dépôt Git lui-même est divisé en deux parties :

  • l’index (index)
  • la base de données d’objets (object database)

Lorsque vous invoquez la commande git add, Git effectue une copie du fichier dans votre répertoire de travail et range cette copie dans l’index. Cet index (ou zone d’indexation) est un endroit provisoire où nous pouvons placer tout un tas de choses jusqu’à ce que nous décidons de les valider ou non.

Maintenant, lorsque vous invoquez git commit, Git va prendre en compte tout le contenu de la zone d’indexation et l’enregistrer dans la base de données d’objets, qui représente en quelque sorte la mémoire permanente de Git.

L’opération ressemble à ce que les chefs de cuisine appellent la mise en place. Dans un premier temps, vous découpez et tranchez toute une série d’ingrédients. Vous les préparez dans des bols ou des assiettes, pour sélectionner ensuite ce que vous allez mettre dans la poêle ou dans le four.

Mise en place

Un peu de pratique

Répertoire de travail ? Index ? Base de données d’objets ? Prenons un exemple concret pour montrer à quoi correspondent ces trois notions qui ont l’air un peu abstraites pour le moment.

Créez un répertoire formation-git/atelier-08 et initialisez un dépôt Git :

$ cd ~/formation-git/
$ mkdir atelier-08
$ cd atelier-08
$ git init
...
Initialized empty Git repository in /home/kikinovak/formation-git/atelier-08/.git/

Créez un fichier RECETTES.md :

$ echo "# Mes recettes" > RECETTES.md
  • Le fichier RECETTES.md se trouve dans votre répertoire de travail.
  • L’index de Git est vide.
  • La base de données d’objets de Git est également vide.

Ajoutez le fichier à l’index de Git :

$ git add RECETTES.md
  • Git a copié le fichier RECETTES.md du répertoire de travail vers l’index.
  • La base de données d’objets est toujours vide.

Effectuez un commit avec un message approprié :

$ git commit -m "Ajout d'un fichier RECETTES."
[master (root-commit) 0eff38c] Ajout d'un fichier RECETTES.
 1 file changed, 1 insertion(+)
 create mode 100644 RECETTES.md
  • À présent, Git a enregistré le contenu de l’index dans la base de données d’objets.

Un fichier dans tous ses états

Nous avons vu à quoi ressemble le flux de travail avec Git :

  1. Vous éditez un ou plusieurs fichiers.
  2. Vous les ajoutez à l’index de Git.
  3. Une fois que c’est présentable, vous effectuez un commit.

À tout moment, Git surveille l’état de tous ces fichiers, en se posant les questions suivantes :

  • Quels fichiers sont présents dans le répertoire de travail ?
  • Quels fichiers ont été ajoutés à l’index ?
  • Quels fichiers ont déjà été validés dans la base de données d’objets ?

Lorsque nous ajoutons un nouveau fichier à un dépôt, Git voit très bien que ce fichier existe mais ne fait rien jusqu’à ce que nous lui disions explicitement d’en tenir compte :

  • Un fichier qui n’a pas encore été ajouté à l’index est considéré comme non suivi (untracked).
  • À partir du moment où nous ajoutons un fichier à l’index, Git garde un œil sur ce que ce fichier devient. C’est donc dorénavant un fichier suivi (tracked).

Une fois qu’un fichier est suivi (tracked), il se trouve dans l’un de ces trois états :

  • indexé (staged)
  • inchangé (unmodified)
  • modifié (modified)

Exercice

Voici une petite liste récapitulative des différents états dans lesquels un fichier peut se trouver par rapport à Git :

  • non suivi (untracked)
  • suivi (tracked)
  • indexé (staged)
  • inchangé (unmodified)
  • modifié (modified)

Nous sommes toujours dans le répertoire formation-git/atelier-08 :

  1. Créez un nouveau fichier Sauce-Bolognaise.md.
  2. Ajoutez Sauce-Bolognaise.md à l’index de Git (git add).
  3. Validez les changements (git commit -m "Ajout d'une recette de sauce bolognaise.").
  4. Éditez Sauce-Bolognaise.md et enregistrez les modifications.

Question À chacune des étapes 1 à 4, quel est l’état du fichier Sauce-Bolognaise.md par rapport à Git ? Non suivi ? Suivi ? Indexé ? Inchangé ? Modifié ? Notez que plusieurs réponses sont possibles pour certaines étapes.

Lire la suite : État des lieux


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Formation

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *