Ce guide vous apprend à explorer l’historique de vos commits avec
git log. Vous irez bien au-delà du simple listing : filtrer par
auteur, par date, par fichier, rechercher un mot dans les modifications,
et formater la sortie pour la rendre lisible. C’est une compétence
essentielle pour comprendre l’évolution d’un projet et retrouver
l’origine d’un changement.
Prérequis : un dépôt avec quelques commits.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »git log: afficher l’historique des commits- Options de formatage :
--oneline,--graph,--pretty - Filtres : par auteur, date, fichier, nombre de commits
- Recherche : trouver un commit par son contenu ou son message
git show: inspecter le contenu détaillé d’un commit
L’historique de base
Section intitulée « L’historique de base »La commande git log affiche la liste des commits, du plus récent au
plus ancien :
git logSortie attendue :
commit 3f7a2b1c8e9d4f5a6b7c8d9e0f1a2b3c4d5e6f7a (HEAD -> main)Author: Stéphane ROBERT <stephane@example.com>Date: Fri Mar 28 14:30:00 2026 +0100
Ajout de la page de contact
commit a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0Author: Stéphane ROBERT <stephane@example.com>Date: Fri Mar 28 10:15:00 2026 +0100
Création de la structure du projet
commit 1f2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0dAuthor: Stéphane ROBERT <stephane@example.com>Date: Thu Mar 27 16:00:00 2026 +0100
Initial commitChaque commit affiche son SHA complet, l’auteur, la date et le message.
Sur un projet avec beaucoup de commits, cette sortie défile. Appuyez
sur q pour quitter le pager.
Formater la sortie
Section intitulée « Formater la sortie »Résumé compact avec --oneline
Section intitulée « Résumé compact avec --oneline »L’option la plus utilisée au quotidien. Chaque commit tient sur une ligne :
git log --onelineSortie attendue :
3f7a2b1 (HEAD -> main) Ajout de la page de contacta1b2c3d Création de la structure du projet1f2d3e4 Initial commitLe SHA est abrégé à 7 caractères (suffisamment unique dans la plupart des projets).
Graphe des branches avec --graph
Section intitulée « Graphe des branches avec --graph »Pour visualiser les branches et les merges dans le terminal :
git log --oneline --graph --all --decorateSortie attendue (projet avec des branches) :
* e5f6a7b (HEAD -> main) Merge branch 'feature/contact'|\| * d4c3b2a (feature/contact) Ajout du formulaire de contact| * c3b2a1f Styles du formulaire|/* a1b2c3d Création de la structure du projet* 1f2d3e4 Initial commitLes lignes |, \ et / dessinent les branches. L’étoile * marque
chaque commit. C’est l’équivalent d’un outil graphique, directement
dans votre terminal.
Format personnalisé avec --pretty
Section intitulée « Format personnalisé avec --pretty »Pour un contrôle total sur l’affichage :
git log --pretty=format:"%h %an %ar %s"Sortie attendue :
3f7a2b1 Stéphane ROBERT 2 hours ago Ajout de la page de contacta1b2c3d Stéphane ROBERT 6 hours ago Création de la structure du projet1f2d3e4 Stéphane ROBERT 1 day ago Initial commitLes principaux placeholders :
| Placeholder | Signification | Exemple |
|---|---|---|
%H | SHA complet | 3f7a2b1c8e9d... |
%h | SHA abrégé | 3f7a2b1 |
%an | Nom de l’auteur | Stéphane ROBERT |
%ae | Email de l’auteur | stephane@example.com |
%ar | Date relative | 2 hours ago |
%ai | Date ISO | 2026-03-28 14:30:00 |
%s | Message (première ligne) | Ajout de la page de contact |
%d | Noms de ref (branches, tags) | (HEAD -> main) |
Voir les fichiers modifiés avec --stat
Section intitulée « Voir les fichiers modifiés avec --stat »git log --stat --onelineSortie attendue :
3f7a2b1 Ajout de la page de contact contact.html | 25 +++++++++++++++++++++++++ style.css | 8 ++++++++ 2 files changed, 33 insertions(+)Le --stat affiche la liste des fichiers modifiés avec le nombre de
lignes ajoutées (+) et supprimées (-).
Voir les modifications complètes avec -p
Section intitulée « Voir les modifications complètes avec -p »Pour afficher le diff complet de chaque commit :
git log -p -1L’option -1 limite à un seul commit. Sans cette limite, git log -p
affiche le diff de chaque commit (très verbeux sur un long historique).
Filtrer l’historique
Section intitulée « Filtrer l’historique »Limiter le nombre de commits
Section intitulée « Limiter le nombre de commits »git log -5 # Les 5 derniers commitsgit log --oneline -10 # Les 10 derniers, format compactFiltrer par auteur
Section intitulée « Filtrer par auteur »git log --author="Stéphane"Git cherche le pattern dans le nom et l’email de l’auteur. Vous pouvez utiliser des expressions régulières :
git log --author="alice\|bob" # Commits d'Alice OU BobFiltrer par date
Section intitulée « Filtrer par date »git log --since="2026-03-01" # Depuis le 1er marsgit log --until="2026-03-15" # Jusqu'au 15 marsgit log --since="2 weeks ago" # 2 dernières semainesgit log --since="2026-03-01" --until="2026-03-15" # Période préciseFiltrer par fichier
Section intitulée « Filtrer par fichier »Pour voir uniquement les commits qui ont modifié un fichier précis :
git log -- style.cssgit log --oneline -- src/auth/Le -- sépare les options de la liste de chemins. Il est optionnel
quand il n’y a pas d’ambiguïté, mais c’est une bonne habitude de
toujours le mettre.
Filtrer par message
Section intitulée « Filtrer par message »git log --grep="contact"Cherche le mot “contact” dans les messages de commit.
Filtrer par contenu modifié
Section intitulée « Filtrer par contenu modifié »Pour trouver le commit qui a ajouté ou supprimé un mot dans le code :
git log -S "function login"L’option -S (pickaxe) est extrêmement utile pour retrouver quand une
fonction, une variable ou une configuration a été introduite.
git log -S "API_KEY" --onelineCombiner les filtres
Section intitulée « Combiner les filtres »Les filtres se combinent naturellement :
git log --author="Alice" --since="2026-03-01" --oneline -- src/Cette commande affiche les commits d’Alice depuis le 1er mars qui ont
touché des fichiers dans le dossier src/.
Inspecter un commit avec git show
Section intitulée « Inspecter un commit avec git show »Pour voir le contenu détaillé d’un commit spécifique :
git show 3f7a2b1Sortie attendue :
commit 3f7a2b1c8e9d4f5a6b7c8d9e0f1a2b3c4d5e6f7aAuthor: Stéphane ROBERT <stephane@example.com>Date: Fri Mar 28 14:30:00 2026 +0100
Ajout de la page de contact
diff --git a/contact.html b/contact.htmlnew file mode 100644index 0000000..1234567--- /dev/null+++ b/contact.html@@ -0,0 +1,25 @@+<!DOCTYPE html>+<html>+...git show affiche les métadonnées du commit et le diff complet des
modifications. Vous pouvez utiliser un SHA abrégé (7 caractères
suffisent).
Pour voir uniquement les noms de fichiers modifiés :
git show --stat 3f7a2b1Résumé des commandes
Section intitulée « Résumé des commandes »| Besoin | Commande |
|---|---|
| Historique de base | git log |
| Compact (1 ligne/commit) | git log --oneline |
| Avec graphe de branches | git log --oneline --graph --all |
| Fichiers modifiés par commit | git log --stat |
| Diff complet | git log -p |
| Par auteur | git log --author="nom" |
| Par date | git log --since="date" --until="date" |
| Par fichier | git log -- chemin/fichier |
| Par message | git log --grep="mot" |
| Par contenu de code | git log -S "code" |
| Détail d’un commit | git show SHA |
Dépannage : problèmes courants
Section intitulée « Dépannage : problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
git log ne montre rien | Aucun commit dans le dépôt | Vérifiez avec git status puis créez un premier commit |
| La sortie défile sans fin | Pager actif (normal) | Appuyez sur q pour quitter |
git log --all ne montre pas les branches distantes | Branches pas encore récupérées | git fetch --all puis relancez |
git log -S ne trouve pas le résultat attendu | Le texte cherché contient des caractères spéciaux | Entourez de guillemets simples : git log -S 'mon texte' |
--author ne trouve personne | Le nom ne correspond pas exactement | Essayez avec un fragment : --author="début du nom" |
À retenir
Section intitulée « À retenir »git log --onelineest votre vue quotidienne de l’historiquegit log --graph --allvisualise les branches et les merges- Filtrez par auteur (
--author), date (--since/--until), fichier (-- chemin) ou contenu (-S "code") git show SHAinspecte le contenu détaillé d’un commit- Combinez les filtres pour des recherches précises
- Créez un alias
git lgpour le graphe quotidien