Par Anonyme (non vérifié) , 29 avril 2026

Pourquoi blame

Blame répond à "qui a écrit cette ligne et pourquoi ?" — la porte d'entrée pour creuser l'historique quand quelque chose semble mauvais, suspect ou étonnamment intelligent.

Les bases

git blame src/checkout.js
git blame -L 40,60 src/checkout.js

Suivre du code déplacé

git blame -M src/checkout.js     # suivre les déplacements within-file
git blame -C src/checkout.js     # suivre les déplacements across-file
git blame -CCC src/checkout.js   # détection cross-file agressive

Ignorer les commits bruyants

# .git-blame-ignore-revs
abc1234567890   # Apply prettier across codebase
def4567890123   # Apply black to all Python
git blame --ignore-revs-file=.git-blame-ignore-revs src/checkout.js
git config blame.ignoreRevsFile .git-blame-ignore-revs

Blame par contenu

git log -S 'EMAIL_REGEX' -- src/
git log -G 'email.*regex' --pickaxe-regex -- src/

Chasser une régression

git blame -L 40,60 src/checkout.js
git show <sha>
git log --follow -p src/checkout.js
git bisect start
git bisect bad HEAD
git bisect good <earlier-sha>

Vues annotées dans les éditeurs

GitLens de VS Code, annotate intégré de JetBrains et fugitive.vim de Vim offrent du blame interactif.

Blame inverse

git log --reverse --follow -p -L 40,60:src/checkout.js

Blame sans historique

git blame --line-porcelain src/checkout.js | \
  sed -n 's/^author //p' | sort | uniq -c | sort -rn

Étiquette

Blame est pour comprendre, pas pour pointer du doigt.