Aller au contenu

État des lieux

Git

Nous avons vu en détail les états successifs d'un fichier par rapport à Git. Vous commencez petit à petit à vous familiariser avec le workflow spécifique à Git. Dans cet atelier pratique, nous allons aborder un outil fort pratique qui nous permettra à chaque instant de savoir où nous en sommes exactement lorsque nous travaillons avec Git : la commande git status.

Un peu de pratique

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

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

Pour l'instant nous n'avons rien fait. Faisons quand-même un premier état des lieux :

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

Pas grand-chose à signaler pour l'instant (No commits yet).

Notez au passage que Git nous fait quand-même une petite suggestion pour la suite.

Cette fois-ci, j'utilise Git pour planifier un petit road trip en moto, et je vais créer deux fichiers Roadtrip.md et Entretien.md. Voici le fichier Roadtrip.md :

# Roadtrip en moto

- Orpierre

- Briançon

- Chiavenna

- Innsbruck

Et voici le fichier Entretien.md :

# Entretien moto

- [ ] Vidange

- [ ] Filtre à huile

- [ ] Pneu avant

Voyons où nous en sommes :

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Entretien.md
        Roadtrip.md

nothing added to commit but untracked files present (use "git add" to track)
  • Ici, Git m'informe que mon répertoire de travail contient deux fichiers non suivis (Untracked).

  • L'index est vide puisque nous n'avons rien ajouté pour l'instant.

  • La base de données d'objets est également vide, puisque nous n'avons pas encore effectué de commit.

À présent, nous allons soumettre un de nos deux fichiers à Git :

$ git add Roadtrip.md

Voyons ce que ça donne :

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file: Roadtrip.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Entretien.md
  • Le fichier Roadtrip.md est dorénavant suivi par Git. Il est également indexé.

  • Si nous validons en l'état, seul le fichier Roadtrip.md sera inclus dans le commit.

Effectuons donc ce commit sans oublier le petit message qui va bien, et affichons le résultat :

$ git commit -m "Ajout du fichier Roadtrip"
[master (root-commit) f00df8b] Ajout du fichier Roadtrip
1 file changed, 9 insertions(+)
create mode 100644 Roadtrip.md
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Entretien.md

nothing added to commit but untracked files present (use "git add" to track)
  • Git a pris le contenu de l'index et l'a ajouté à la base de données d'objets.

  • Notez la petite suite de caractères f00df8b qui identifie l'enregistrement.

Le fichier Entretien.md n'est toujours pas suivi. On va donc l'ajouter à l'index :

$ git add Entretien.md
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file: Entretien.md

Maintenant que Entretien.md est dans l'index, validons-le à son tour :

$ git commit -m "Ajout du fichier Entretien"
[master 2c06935] Ajout du fichier Entretien
1 file changed, 7 insertions(+)
create mode 100644 Entretien.md
  • Nous venons d'effectuer notre deuxième commit dans la base de données d'objets.

  • Cette fois-ci, l'enregistrement a été identifié avec la petite suite de caractères 2c06935.

Un peu d'histoire

Vous vous rappelez peut-être que lorsque j'ai présenté Git, je vous ai dit qu'un logiciel de gestion de versions servait à enregistrer l'historique d'un projet. C'est précisément ce que nous venons de faire :

  • Nous avons enregistré un premier commit f00df8b qui n'a pas de parent.

  • Notre deuxième commit 2c06935 est le fils du commit f00df8b.

  • Si nous faisions un troisième commit, il aurait pour parent le commit 2c06935.

  • Les commits s'enchaînent ainsi comme un collier de perles ou une guirlande de noël.

À vous de jouer !

  • Rappelez-vous (mentalement ou sur un bout de papier) les différents états d'un fichier par rapport à Git.

  • Créez un répertoire formation-git/atelier-10 et initialisez un dépôt Git dans ce répertoire.

  • Refaites l'atelier pratique ci-dessus en identifiant l'état successif de chaque fichier.

  • Ajoutez la ligne - [ ] Réparer le rétroviseur au fichier Entretien.md.

  • Que constatez-vous ?

  • Essayez d'intégrer cette modification sous forme d'un troisième commit avec un message approprié.

  • Là aussi, identifiez l'état successif des fichiers par rapport à Git.