Git Blame
What is git blame?
git blame shows, for every line of a file, who changed it last, in which commit and when.
Despite the name, it is not about blaming people. Use it to find the commit behind a line, so you can read why it was changed.
Basic Usage
Example: Blame a File
git blame index.html
^cd70922 (W3Schools 2025-01-15 10:00:00 +0000 1) Hello World
^cd70922 (W3Schools 2025-01-15 10:00:00 +0000 2) Welcome to Git
2aba7c92 (Emma 2025-01-16 14:30:00 +0000 3) Read the docs
Try it Yourself »
Each line shows the short commit hash, the author, the date and time, the line number, and the line itself.
A hash that starts with ^ belongs to the first commit of the project.
Blame Only Some Lines (-L)
Use -L start,end to blame only part of a file:
Example: Lines 2 to 3
git blame -L 2,3 index.html
^cd70922 (W3Schools 2025-01-15 10:00:00 +0000 2) Welcome to Git
2aba7c92 (Emma 2025-01-16 14:30:00 +0000 3) Read the docs
Try it Yourself »
Show Email Addresses (-e)
Example: Show the Author's Email
git blame -e -L 3,3 index.html
2aba7c92 (<emma@example.com> 2025-01-16 14:30:00 +0000 3) Read the docs
Try it Yourself »
Find Out Why a Line Changed
Copy the hash from git blame and pass it to git show to see the whole commit, with its message:
Example: Show the Commit Behind a Line
git show --stat 2aba7c92
commit 2aba7c923fcdc50efcbead372928877690d55d7b (HEAD -> main)
Author: Emma <emma@example.com>
Date: Thu Jan 16 14:30:00 2025 +0000
Add a link to the docs
index.html | 1 +
1 file changed, 1 insertion(+)
Try it Yourself »
Ignore Formatting Commits
If a commit only re-formatted code, git blame shows that commit for every line it touched. Use -w to ignore white-space changes, or --ignore-rev <commit> to skip a commit completely: