Voici le douzième volet de la formation Git. Dans mon précédent article, nous avons vu en détail la gestion des conflits éventuels lors de la fusion de deux branches. Aujourd’hui nous allons nous intéresser à la gestion de l’historique de Git.
Depuis notre première prise en main de Git, nous avons créé des branches, effectué des commits et fusionné ce que nous avons développé dans les branches. Chaque pas en avant dans notre travail est ainsi matérialisé dans un commit. Tôt ou tard nous allons nous demander comment nous avons fait exactement pour en arriver là.
Un peu d’histoire appliquée
Commençons par un exemple simple. Retournez dans le répertoire atelier-08
:
$ cd ~/formation-git/atelier-08 $ ls RECETTES.md Sauce-bolognaise.md
Le dépôt a l’air propre :
$ git status On branch master nothing to commit, working tree clean
Il ne contient que la seule branche master
:
$ git branch * master
Dans sa configuration par défaut, la commande git log
affiche tous les commits de la branche courante. Le commit le plus récent s’affiche en premier, suivi du commit parent, et ainsi de suite :
$ git log commit 41e6de1fca2c6dac37af6fe21642f836ebb59b91 (HEAD -> master) Author: Nicolas Kovacs <info@microlinux.fr> Date: Fri Jan 27 09:16:48 2023 +0100 Peaufinage de la recette de sauce bolognaise. commit 08de09960b9ee5e1882aa9f10c9096b2a641634e Author: Nicolas Kovacs <info@microlinux.fr> Date: Fri Jan 27 09:15:32 2023 +0100 Ajout d'une recette de sauce bolognaise. commit ad07c4d2b08409f29315edf5e8c3a514567d74d2 Author: Nicolas Kovacs <info@microlinux.fr> Date: Fri Jan 27 09:13:19 2023 +0100 Ajout d'un fichier RECETTES.
Chaque commit est identifié grâce à une saucisse hexadécimale indigeste à 40 caractères. En règle générale, nous n’avons pas besoin d’autant de caractères pour identifier clairement un commit. Il se trouve que les sept premiers caractères de l’ID suffisent amplement :
$ git log --abbrev-commit commit 41e6de1 (HEAD -> master) Author: Nicolas Kovacs <info@microlinux.fr> Date: Fri Jan 27 09:16:48 2023 +0100 Peaufinage de la recette de sauce bolognaise. commit 08de099 Author: Nicolas Kovacs <info@microlinux.fr> Date: Fri Jan 27 09:15:32 2023 +0100 Ajout d'une recette de sauce bolognaise. commit ad07c4d Author: Nicolas Kovacs <info@microlinux.fr> Date: Fri Jan 27 09:13:19 2023 +0100 Ajout d'un fichier RECETTES.
Vous n’avez peut-être pas besoin de toutes ces infos sur l’auteur et la date du commit. Dans ce cas, on peut faire encore plus bref :
$ git log --abbrev-commit --pretty=oneline 41e6de1 (HEAD -> master) Peaufinage de la recette de sauce bolognaise. 08de099 Ajout d'une recette de sauce bolognaise. ad07c4d Ajout d'un fichier RECETTES.
Bien évidemment rien ne vous empêche d’utiliser l’option --pretty=oneline
toute seule sans l’option --abbrev-commit
, mais vous vous retrouverez avec des identifiants à 40 caractères.
Cette combinaison d’options est tellement populaire qu’elle existe sous une forme compacte :
$ git log --oneline 41e6de1 (HEAD -> master) Peaufinage de la recette de sauce bolognaise. 08de099 Ajout d'une recette de sauce bolognaise. ad07c4d Ajout d'un fichier RECETTES.
L’historique et les branches
À présent, rendez-vous dans le répertoire atelier-12/hello
. Vous ne vous souvenez plus trop à quoi correspond ce dépôt Git ? Faisons donc notre propre recherche. Affichez d’abord l’état du dépôt :
$ git status On branch master nothing to commit, working tree clean
Est-ce que nous avons des branches dans ce dépôt ?
$ git branch
hello-cow
hello-figlet
* master
J’ai dit plus haut que dans sa configuration par défaut, git log
affiche tous les commits de la branche courante dans un ordre chronologique inverse. Voyons à quoi cela correspond dans la pratique :
$ git log --oneline 89211a3 (HEAD -> master) Peaufinage du script initial. bebe769 Commit initial. $ git switch hello-cow Switched to branch 'hello-cow' $ git log --oneline 477d1a0 (HEAD -> hello-cow) Implémentation d'une vache fatiguée. d268724 Premier jet de la vache qui dit bonjour. bebe769 Commit initial. $ git switch hello-figlet Switched to branch 'hello-figlet' $ git log --oneline 8db1b22 (HEAD -> hello-figlet) Premier jet avec des majuscules ASCII. bebe769 Commit initial. $ git switch master Switched to branch 'master'
Un peu compliqué, tout ça. Et pas très parlant non plus.
Est-ce qu’il n’y aurait pas moyen de voir en un coup d’œil tous les commits dans toutes les branches ? Oui, en ajoutant les deux options --all
et --graph
:
$ git log --oneline --all --graph * 477d1a0 (hello-cow) Implémentation d'une vache fatiguée. * d268724 Premier jet de la vache qui dit bonjour. | * 89211a3 (HEAD -> master) Peaufinage du script initial. |/ | * 8db1b22 (hello-figlet) Premier jet avec des majuscules ASCII. |/ * bebe769 Commit initial.
- L’option
--all
affiche l’historique de toutes les branches. - L’option
--graph
se charge d’afficher les commits sous forme graphique.
Exercice
- Jetez un œil dans le dépôt Git
atelier-15/hello
. - Quel est l’état du dépôt ?
- Est-ce qu’il y a des branches ?
- Retracez l’historique du dépôt avec la commande
git log
et les options qui vont bien. - Expliquez l’historique du dépôt avec vos mots.
Lire la suite : Afficher les modifications
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.
0 commentaire