GIT-BLAME(1) Git Manual GIT-BLAME(1) (NAME) git-blame - (SYNOPSIS) git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental] [-L ] [-S ] [-M] [-C] [-C] [-C] [--since=] [--ignore-rev ] [--ignore-revs-file ] [--color-lines] [--color-by-age] [--progress] [--abbrev=] [ --contents ] [ | --reverse ..] [--] (DESCRIPTION) . . -L . ( ). -C -M . git diff <> . . . diff . pickaxe blame_usage : $ git log --pretty=oneline -S'blame_usage' 5040f17eba15504bad66b14a645bddd9b015ebb7 blame -S ea4c7f9bf69e781dd0cd88d2bccb2bf5cc15c9a7 git-blame: Make the output (OPTIONS) -b (boundary commits) SHA-1 . blame.blankBoundary . --root . blame.showRoot . --show-stats blame . -L ,, -L : , . . . . -L -L , . -L , . : o ( ). o // POSIX . -L ( ) . ^// . . o + - . : funcname funcname . : -L ( ) . ^: . git diff (patch hunk headers) ( Defining a custom hunk-header gitattributes(5) ). -l (rev) (: ). -t (: ). -S git-rev-list(1). --reverse .. . . .. . git blame --reverse git blame --reverse ..HEAD . --first-parent (merge commit) . . -p, --porcelain ( ). --line-porcelain . --porcelain . --incremental . --encoding= . none blame . git-log(1) . --contents HEAD. - . --date . --date blame.date . blame.date iso . --date git-log(1) . --progress, --no-progress . . --progress --porcelain --incremental . -M[] . ( A B B A ) blame ( B) ( A) . . - / . . -C[] -M . . . . - / . . -C -C . --ignore-rev blame . . . blame.markIgnoredLines ? blame . blame.markUnblamableLines * . ignored unblamable . --ignore-revs-file fsck.skipList . blame.ignoreRevsFile . "" . --color-lines . . (cyan) color.blame.repeatedLines . --color-by-age . color.blame.highlightRecent . -h . -c git-annotate(1) (: ). --score-debug ( -C ) ( -M ). . - . git blame . -f, --show-name . . -n, --show-number (: ). -s . -e, --show-email (: ). blame.showEmail . -w . --diff-algorithm=(patience|minimal|histogram|myers) (diff). : default, myers diff. . minimal diff . patience <> . histogram patience << >> . diff.algorithm --diff-algorithm=default . --abbrev= + +1 . (caret) . (THE DEFAULT FORMAT) --porcelain --incremental git blame : o o ( -s -e ) o . (THE PORCELAIN FORMAT) : o SHA-1 o o o . . : o (author) (author-mail) (author-time) (author-tz) (committer). o . o (summary). TAB . . . . ignored unblamable . . --line-porcelain ( ) : # git blame --line-porcelain file | sed -n 's/^author //p' | sort | uniq -c | sort -rn (SPECIFYING RANGES) git blame git annotate . -L . - foo -L ( -- ): git blame -L 40,60 foo git blame -L 40,+21 foo : git blame -L '/^sub hello {/,/^}$/' foo hello . v2.6.18 git rev-list : git blame v2.6.18.. -- foo git blame --since=3.weeks -- foo ( v2.6.18 ) . . (refactor) . : git log --diff-filter=A --pretty=short -- foo commit^! : git blame -C -C -f $commit^! -- foo (INCREMENTAL OUTPUT) --incremental . ( ) . . 1. blame : <40-byte-hex-sha1> . 2. ( ) . 3. : filename ( ). (parsing) : ( <40-byte-hex-sha1> filename) << >> ( ) . ( ) blame . (MAPPING AUTHORS) gitmailmap(5) . (CONFIGURATION) git-config(1) . : blame.blankBoundary git- blame(1). false . blame.coloring blame . repeatedLines highlightRecent none . blame.date git-blame(1) . iso . --date git-log(1) . blame.showEmail git-blame(1). false . blame.showRoot git-blame(1). false . blame.ignoreRevsFile git-blame(1). # . . . --ignore-revs-file . blame.markUnblamableLines * git-blame(1). blame.markIgnoredLines ? git-blame(1). (SEE ALSO) git-annotate(1) (GIT) git(1) Git 2.55.0 2026-06-29 GIT-BLAME(1)