Introduction
Découvrez les commandes git status, git log, git tag et git blame pour examiner l'état et l'historique d'un dépôt Git.

Une fois que vous disposez d'un dépôt Git avec un certain historique, la majeure partie de votre travail quotidien ne consiste pas à modifier des fichiers — il s'agit de comprendre leur état actuel et passé. Avant de valider, pousser ou annuler quoi que ce soit, vous souhaitez généralement répondre à des questions telles que : Qu'ai-je modifié sans encore sauvegarder ? Qui a écrit cette ligne, et pourquoi ? Quand ce bogue a-t-il été introduit ? À quelle version appartient ce commit ?
Cette partie du tutoriel couvre les quatre commandes que vous utilisez le plus souvent pour examiner un dépôt plutôt que le modifier :
| Commande | Ce à quoi elle répond | Portée |
|---|---|---|
git status | Qu'est-ce qui a changé depuis le dernier commit, et qu'est-ce qui est indexé ? | Répertoire de travail + zone d'index |
git log | Quel est l'historique des commits ? | Instantanés validés uniquement |
git tag | Quels commits sont notables (ex. : versions) ? | Pointeurs nommés vers des commits |
git blame | Qui a modifié chaque ligne en dernier, et dans quel commit ? | Paternité ligne par ligne d'un fichier |
Chaque commande est résumée ci-dessous avec un exemple rapide. Les pages suivantes couvrent toutes les options en détail.
git status
La commande git status affiche l'état du répertoire de travail et de la zone d'index, vous permettant de voir quelles modifications sont indexées pour le prochain commit et quels fichiers ne sont pas encore suivis par Git. Elle n'affiche pas l'historique des commits — seulement la différence entre vos fichiers actuels et le dernier commit.
Exécutez-la dans n'importe quel dépôt :
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txtIci, index.html est indexé (il fera partie du prochain commit), style.css est modifié mais pas encore indexé, et notes.txt est tout nouveau et non suivi. Faites de git status une habitude avant chaque commit afin de ne jamais valider — ou oublier — un fichier par inadvertance.
git log
La commande git log examine l'historique des commits d'un dépôt et vous aide à trouver une version particulière d'un projet. Elle liste, filtre et recherche des commits — mais elle n'opère que sur l'historique validé, donc tout ce que vous n'avez pas encore commité n'apparaîtra pas.
$ git log --oneline -3
9a3c1f4 (HEAD -> main) Fix navbar alignment on mobile
1d72b08 Add contact form validation
f0e5a91 Initial commitL'option --oneline condense chaque commit en son hash court et son sujet. Vous pouvez filtrer par auteur (--author), par date (--since, --until), ou par contenu (-S "searchterm") pour identifier précisément le moment où une modification a eu lieu. Pour inspecter un seul commit en détail, associez git log à git show.
git tag
Les tags sont des références qui pointent vers des points spécifiques et notables dans l'historique Git. Leur principal usage est de marquer une version — par exemple v1.0.0. Contrairement à une branche, un tag ne se déplace pas lorsque vous ajoutez de nouveaux commits ; une fois créé, il pointe définitivement vers le même instantané.
$ git tag v1.0.0 # create a lightweight tag on the current commit
$ git tag # list existing tags
v1.0.0
$ git tag -a v1.1.0 -m "Release 1.1.0" # create an annotated tag with a messageUn tag léger est simplement un nom pour un commit, tandis qu'un tag annoté (-a) stocke également le nom du créateur, une date et un message — les tags annotés sont recommandés pour les versions. Les tags ne sont pas poussés automatiquement ; vous les partagez avec git push origin v1.0.0 (ou git push --tags).
git blame
La commande git blame affiche les métadonnées de paternité associées à chaque ligne d'un fichier : le commit, l'auteur et la date à laquelle cette ligne a été modifiée pour la dernière fois. C'est l'outil de référence pour comprendre pourquoi une ligne particulière existe et à qui s'adresser à son sujet.
$ git blame -L 1,3 index.html
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 1) <!DOCTYPE html>
1d72b08c (John Roe 2024-02-28 14:05:33 +0000 2) <html lang="en">
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 3) <head>L'option -L 1,3 limite la sortie aux lignes 1 à 3. Chaque ligne est préfixée par le hash court du commit, l'auteur et l'horodatage de la dernière modification. Pour approfondir l'un de ces commits, copiez son hash dans git show ou git log.
Examiner vs. modifier
Un modèle mental utile : ces commandes sont en lecture seule. Aucune des commandes git status, git log, git tag (lors d'un listage) ou git blame ne modifie vos fichiers ou votre historique — elles ne font que rapporter l'état. Cela les rend sûres à exécuter à tout moment. Lorsque vous souhaitez réellement modifier ce qui est enregistré, vous faites appel à d'autres outils tels que git commit, git checkout, ou git diff pour prévisualiser les modifications en premier.