'\" t
.\"     Title: git-blame
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 2024-04-25
.\"    Manual: Git Manual
.\"    Source: Git 2.45.0.rc1.8.ge326e52010
.\"  Language: English
.\"
.TH "GIT\-BLAME" "1" "2024\-04\-25" "Git 2\&.45\&.0\&.rc1\&.8\&.ge3" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-blame \- Show what revision and author last modified each line of a file
.SH "SYNOPSIS"
.sp
.nf
\fIgit blame\fR [\-c] [\-b] [\-l] [\-\-root] [\-t] [\-f] [\-n] [\-s] [\-e] [\-p] [\-w] [\-\-incremental]
            [\-L <range>] [\-S <revs\-file>] [\-M] [\-C] [\-C] [\-C] [\-\-since=<date>]
            [\-\-ignore\-rev <rev>] [\-\-ignore\-revs\-file <file>]
            [\-\-color\-lines] [\-\-color\-by\-age] [\-\-progress] [\-\-abbrev=<n>]
            [ \-\-contents <file> ] [<rev> | \-\-reverse <rev>\&.\&.<rev>] [\-\-] <file>
.fi
.sp
.SH "DESCRIPTION"
.sp
Annotates each line in the given file with information from the revision which last modified the line\&. Optionally, start annotating from the given revision\&.
.sp
When specified one or more times, \fB\-L\fR restricts annotation to the requested lines\&.
.sp
The origin of lines is automatically followed across whole\-file renames (currently there is no option to turn the rename\-following off)\&. To follow lines moved from one file to another, or to follow lines that were copied and pasted from another file, etc\&., see the \fB\-C\fR and \fB\-M\fR options\&.
.sp
The report does not tell you anything about lines which have been deleted or replaced; you need to use a tool such as \fIgit diff\fR or the "pickaxe" interface briefly mentioned in the following paragraph\&.
.sp
Apart from supporting file annotation, Git also supports searching the development history for when a code snippet occurred in a change\&. This makes it possible to track when a code snippet was added to a file, moved or copied between files, and eventually deleted or replaced\&. It works by searching for a text string in the diff\&. A small example of the pickaxe interface that searches for \fBblame_usage\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git log \-\-pretty=oneline \-S\*(Aqblame_usage\*(Aq
5040f17eba15504bad66b14a645bddd9b015ebb7 blame \-S <ancestry\-file>
ea4c7f9bf69e781dd0cd88d2bccb2bf5cc15c9a7 git\-blame: Make the output
.fi
.if n \{\
.RE
.\}
.sp
.SH "OPTIONS"
.PP
\-b
.RS 4
Show blank SHA\-1 for boundary commits\&. This can also be controlled via the
\fBblame\&.blankBoundary\fR
config option\&.
.RE
.PP
\-\-root
.RS 4
Do not treat root commits as boundaries\&. This can also be controlled via the
\fBblame\&.showRoot\fR
config option\&.
.RE
.PP
\-\-show\-stats
.RS 4
Include additional statistics at the end of blame output\&.
.RE
.PP
\-L <start>,<end>, \-L :<funcname>
.RS 4
Annotate only the line range given by
\fI<start>,<end>\fR, or by the function name regex
\fI<funcname>\fR\&. May be specified multiple times\&. Overlapping ranges are allowed\&.
.sp
\fI<start>\fR
and
\fI<end>\fR
are optional\&.
\fB\-L <start>\fR
or
\fB\-L <start>,\fR
spans from
\fI<start>\fR
to end of file\&.
\fB\-L ,<end>\fR
spans from start of file to
\fI<end>\fR\&.
.sp
\fI<start>\fR
and
\fI<end>\fR
can take one of these forms:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
number
.sp
If
\fI<start>\fR
or
\fI<end>\fR
is a number, it specifies an absolute line number (lines count from 1)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fB/regex/\fR
.sp
This form will use the first line matching the given POSIX regex\&. If
\fI<start>\fR
is a regex, it will search from the end of the previous
\fB\-L\fR
range, if any, otherwise from the start of file\&. If
\fI<start>\fR
is
\fB^/regex/\fR, it will search from the start of file\&. If
\fI<end>\fR
is a regex, it will search starting at the line given by
\fI<start>\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
+offset or \-offset
.sp
This is only valid for
\fI<end>\fR
and will specify a number of lines before or after the line given by
\fI<start>\fR\&.
.RE
.sp
If
\fB:<funcname>\fR
is given in place of
\fI<start>\fR
and
\fI<end>\fR, it is a regular expression that denotes the range from the first funcname line that matches
\fI<funcname>\fR, up to the next funcname line\&.
\fB:<funcname>\fR
searches from the end of the previous
\fB\-L\fR
range, if any, otherwise from the start of file\&.
\fB^:<funcname>\fR
searches from the start of file\&. The function names are determined in the same way as
\fBgit diff\fR
works out patch hunk headers (see
\fIDefining a custom hunk\-header\fR
in
\fBgitattributes\fR(5))\&.
.RE
.PP
\-l
.RS 4
Show long rev (Default: off)\&.
.RE
.PP
\-t
.RS 4
Show raw timestamp (Default: off)\&.
.RE
.PP
\-S <revs\-file>
.RS 4
Use revisions from revs\-file instead of calling
\fBgit-rev-list\fR(1)\&.
.RE
.PP
\-\-reverse <rev>\&.\&.<rev>
.RS 4
Walk history forward instead of backward\&. Instead of showing the revision in which a line appeared, this shows the last revision in which a line has existed\&. This requires a range of revision like START\&.\&.END where the path to blame exists in START\&.
\fBgit blame \-\-reverse START\fR
is taken as
\fBgit blame \-\-reverse START\&.\&.HEAD\fR
for convenience\&.
.RE
.PP
\-\-first\-parent
.RS 4
Follow only the first parent commit upon seeing a merge commit\&. This option can be used to determine when a line was introduced to a particular integration branch, rather than when it was introduced to the history overall\&.
.RE
.PP
\-p, \-\-porcelain
.RS 4
Show in a format designed for machine consumption\&.
.RE
.PP
\-\-line\-porcelain
.RS 4
Show the porcelain format, but output commit information for each line, not just the first time a commit is referenced\&. Implies \-\-porcelain\&.
.RE
.PP
\-\-incremental
.RS 4
Show the result incrementally in a format designed for machine consumption\&.
.RE
.PP
\-\-encoding=<encoding>
.RS 4
Specifies the encoding used to output author names and commit summaries\&. Setting it to
\fBnone\fR
makes blame output unconverted data\&. For more information see the discussion about encoding in the
\fBgit-log\fR(1)
manual page\&.
.RE
.PP
\-\-contents <file>
.RS 4
Annotate using the contents from the named file, starting from <rev> if it is specified, and HEAD otherwise\&. You may specify
\fI\-\fR
to make the command read from the standard input for the file contents\&.
.RE
.PP
\-\-date <format>
.RS 4
Specifies the format used to output dates\&. If \-\-date is not provided, the value of the blame\&.date config variable is used\&. If the blame\&.date config variable is also not set, the iso format is used\&. For supported values, see the discussion of the \-\-date option at
\fBgit-log\fR(1)\&.
.RE
.PP
\-\-[no\-]progress
.RS 4
Progress status is reported on the standard error stream by default when it is attached to a terminal\&. This flag enables progress reporting even if not attached to a terminal\&. Can\(cqt use
\fB\-\-progress\fR
together with
\fB\-\-porcelain\fR
or
\fB\-\-incremental\fR\&.
.RE
.PP
\-M[<num>]
.RS 4
Detect moved or copied lines within a file\&. When a commit moves or copies a block of lines (e\&.g\&. the original file has A and then B, and the commit changes it to B and then A), the traditional
\fIblame\fR
algorithm notices only half of the movement and typically blames the lines that were moved up (i\&.e\&. B) to the parent and assigns blame to the lines that were moved down (i\&.e\&. A) to the child commit\&. With this option, both groups of lines are blamed on the parent by running extra passes of inspection\&.
.sp
<num> is optional but it is the lower bound on the number of alphanumeric characters that Git must detect as moving/copying within a file for it to associate those lines with the parent commit\&. The default value is 20\&.
.RE
.PP
\-C[<num>]
.RS 4
In addition to
\fB\-M\fR, detect lines moved or copied from other files that were modified in the same commit\&. This is useful when you reorganize your program and move code around across files\&. When this option is given twice, the command additionally looks for copies from other files in the commit that creates the file\&. When this option is given three times, the command additionally looks for copies from other files in any commit\&.
.sp
<num> is optional but it is the lower bound on the number of alphanumeric characters that Git must detect as moving/copying between files for it to associate those lines with the parent commit\&. And the default value is 40\&. If there are more than one
\fB\-C\fR
options given, the <num> argument of the last
\fB\-C\fR
will take effect\&.
.RE
.PP
\-\-ignore\-rev <rev>
.RS 4
Ignore changes made by the revision when assigning blame, as if the change never happened\&. Lines that were changed or added by an ignored commit will be blamed on the previous commit that changed that line or nearby lines\&. This option may be specified multiple times to ignore more than one revision\&. If the
\fBblame\&.markIgnoredLines\fR
config option is set, then lines that were changed by an ignored commit and attributed to another commit will be marked with a
\fB?\fR
in the blame output\&. If the
\fBblame\&.markUnblamableLines\fR
config option is set, then those lines touched by an ignored commit that we could not attribute to another revision are marked with a
\fI*\fR\&.
.RE
.PP
\-\-ignore\-revs\-file <file>
.RS 4
Ignore revisions listed in
\fBfile\fR, which must be in the same format as an
\fBfsck\&.skipList\fR\&. This option may be repeated, and these files will be processed after any files specified with the
\fBblame\&.ignoreRevsFile\fR
config option\&. An empty file name,
\fB""\fR, will clear the list of revs from previously processed files\&.
.RE
.PP
\-\-color\-lines
.RS 4
Color line annotations in the default format differently if they come from the same commit as the preceding line\&. This makes it easier to distinguish code blocks introduced by different commits\&. The color defaults to cyan and can be adjusted using the
\fBcolor\&.blame\&.repeatedLines\fR
config option\&.
.RE
.PP
\-\-color\-by\-age
.RS 4
Color line annotations depending on the age of the line in the default format\&. The
\fBcolor\&.blame\&.highlightRecent\fR
config option controls what color is used for each range of age\&.
.RE
.PP
\-h
.RS 4
Show help message\&.
.RE
.PP
\-c
.RS 4
Use the same output mode as
\fBgit-annotate\fR(1)
(Default: off)\&.
.RE
.PP
\-\-score\-debug
.RS 4
Include debugging information related to the movement of lines between files (see
\fB\-C\fR) and lines moved within a file (see
\fB\-M\fR)\&. The first number listed is the score\&. This is the number of alphanumeric characters detected as having been moved between or within files\&. This must be above a certain threshold for
\fIgit blame\fR
to consider those lines of code to have been moved\&.
.RE
.PP
\-f, \-\-show\-name
.RS 4
Show the filename in the original commit\&. By default the filename is shown if there is any line that came from a file with a different name, due to rename detection\&.
.RE
.PP
\-n, \-\-show\-number
.RS 4
Show the line number in the original commit (Default: off)\&.
.RE
.PP
\-s
.RS 4
Suppress the author name and timestamp from the output\&.
.RE
.PP
\-e, \-\-show\-email
.RS 4
Show the author email instead of the author name (Default: off)\&. This can also be controlled via the
\fBblame\&.showEmail\fR
config option\&.
.RE
.PP
\-w
.RS 4
Ignore whitespace when comparing the parent\(cqs version and the child\(cqs to find where the lines came from\&.
.RE
.PP
\-\-abbrev=<n>
.RS 4
Instead of using the default 7+1 hexadecimal digits as the abbreviated object name, use <m>+1 digits, where <m> is at least <n> but ensures the commit object names are unique\&. Note that 1 column is used for a caret to mark the boundary commit\&.
.RE
.SH "THE DEFAULT FORMAT"
.sp
When neither \fB\-\-porcelain\fR nor \fB\-\-incremental\fR option is specified, \fBgit blame\fR will output annotation for each line with:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
abbreviated object name for the commit the line came from;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
author ident (by default the author name and date, unless
\fB\-s\fR
or
\fB\-e\fR
is specified); and
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
line number
.RE
.sp
before the line contents\&.
.SH "THE PORCELAIN FORMAT"
.sp
In this format, each line is output after a header; the header at the minimum has the first line which has:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
40\-byte SHA\-1 of the commit the line is attributed to;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the line number of the line in the original file;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the line number of the line in the final file;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
on a line that starts a group of lines from a different commit than the previous one, the number of lines in this group\&. On subsequent lines this field is absent\&.
.RE
.sp
This header line is followed by the following information at least once for each commit:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the author name ("author"), email ("author\-mail"), time ("author\-time"), and time zone ("author\-tz"); similarly for committer\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the filename in the commit that the line is attributed to\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the first line of the commit log message ("summary")\&.
.RE
.sp
The contents of the actual line are output after the above header, prefixed by a TAB\&. This is to allow adding more header elements later\&.
.sp
The porcelain format generally suppresses commit information that has already been seen\&. For example, two lines that are blamed to the same commit will both be shown, but the details for that commit will be shown only once\&. This is more efficient, but may require more state be kept by the reader\&. The \fB\-\-line\-porcelain\fR option can be used to output full commit information for each line, allowing simpler (but less efficient) usage like:
.sp
.if n \{\
.RS 4
.\}
.nf
# count the number of lines attributed to each author
git blame \-\-line\-porcelain file |
sed \-n \*(Aqs/^author //p\*(Aq |
sort | uniq \-c | sort \-rn
.fi
.if n \{\
.RE
.\}
.SH "SPECIFYING RANGES"
.sp
Unlike \fIgit blame\fR and \fIgit annotate\fR in older versions of git, the extent of the annotation can be limited to both line ranges and revision ranges\&. The \fB\-L\fR option, which limits annotation to a range of lines, may be specified multiple times\&.
.sp
When you are interested in finding the origin for lines 40\-60 for file \fBfoo\fR, you can use the \fB\-L\fR option like so (they mean the same thing \(em both ask for 21 lines starting at line 40):
.sp
.if n \{\
.RS 4
.\}
.nf
git blame \-L 40,60 foo
git blame \-L 40,+21 foo
.fi
.if n \{\
.RE
.\}
.sp
Also you can use a regular expression to specify the line range:
.sp
.if n \{\
.RS 4
.\}
.nf
git blame \-L \*(Aq/^sub hello {/,/^}$/\*(Aq foo
.fi
.if n \{\
.RE
.\}
.sp
which limits the annotation to the body of the \fBhello\fR subroutine\&.
.sp
When you are not interested in changes older than version v2\&.6\&.18, or changes older than 3 weeks, you can use revision range specifiers similar to \fIgit rev\-list\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
git blame v2\&.6\&.18\&.\&. \-\- foo
git blame \-\-since=3\&.weeks \-\- foo
.fi
.if n \{\
.RE
.\}
.sp
When revision range specifiers are used to limit the annotation, lines that have not changed since the range boundary (either the commit v2\&.6\&.18 or the most recent commit that is more than 3 weeks old in the above example) are blamed for that range boundary commit\&.
.sp
A particularly useful way is to see if an added file has lines created by copy\-and\-paste from existing files\&. Sometimes this indicates that the developer was being sloppy and did not refactor the code properly\&. You can first find the commit that introduced the file with:
.sp
.if n \{\
.RS 4
.\}
.nf
git log \-\-diff\-filter=A \-\-pretty=short \-\- foo
.fi
.if n \{\
.RE
.\}
.sp
and then annotate the change between the commit and its parents, using \fBcommit^!\fR notation:
.sp
.if n \{\
.RS 4
.\}
.nf
git blame \-C \-C \-f $commit^! \-\- foo
.fi
.if n \{\
.RE
.\}
.SH "INCREMENTAL OUTPUT"
.sp
When called with \fB\-\-incremental\fR option, the command outputs the result as it is built\&. The output generally will talk about lines touched by more recent commits first (i\&.e\&. the lines will be annotated out of order) and is meant to be used by interactive viewers\&.
.sp
The output format is similar to the Porcelain format, but it does not contain the actual lines from the file that is being annotated\&.
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
Each blame entry always starts with a line of:
.sp
.if n \{\
.RS 4
.\}
.nf
<40\-byte\-hex\-sha1> <sourceline> <resultline> <num\-lines>
.fi
.if n \{\
.RE
.\}
.sp
Line numbers count from 1\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
The first time that a commit shows up in the stream, it has various other information about it printed out with a one\-word tag at the beginning of each line describing the extra commit information (author, email, committer, dates, summary, etc\&.)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
Unlike the Porcelain format, the filename information is always given and terminates the entry:
.sp
.if n \{\
.RS 4
.\}
.nf
"filename" <whitespace\-quoted\-filename\-goes\-here>
.fi
.if n \{\
.RE
.\}
.sp
and thus it is really quite easy to parse for some line\- and word\-oriented parser (which should be quite natural for most scripting languages)\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
For people who do parsing: to make it more robust, just ignore any lines between the first and last one ("<sha1>" and "filename" lines) where you do not recognize the tag words (or care about that particular one) at the beginning of the "extended information" lines\&. That way, if there is ever added information (like the commit encoding or extended commit commentary), a blame viewer will not care\&.
.sp .5v
.RE
.RE
.SH "MAPPING AUTHORS"
.sp
See \fBgitmailmap\fR(5)\&.
.SH "CONFIGURATION"
.sp
Everything below this line in this section is selectively included from the \fBgit-config\fR(1) documentation\&. The content is the same as what\(cqs found there:
.PP
blame\&.blankBoundary
.RS 4
Show blank commit object name for boundary commits in
\fBgit-blame\fR(1)\&. This option defaults to false\&.
.RE
.PP
blame\&.coloring
.RS 4
This determines the coloring scheme to be applied to blame output\&. It can be
\fIrepeatedLines\fR,
\fIhighlightRecent\fR, or
\fInone\fR
which is the default\&.
.RE
.PP
blame\&.date
.RS 4
Specifies the format used to output dates in
\fBgit-blame\fR(1)\&. If unset the iso format is used\&. For supported values, see the discussion of the
\fB\-\-date\fR
option at
\fBgit-log\fR(1)\&.
.RE
.PP
blame\&.showEmail
.RS 4
Show the author email instead of author name in
\fBgit-blame\fR(1)\&. This option defaults to false\&.
.RE
.PP
blame\&.showRoot
.RS 4
Do not treat root commits as boundaries in
\fBgit-blame\fR(1)\&. This option defaults to false\&.
.RE
.PP
blame\&.ignoreRevsFile
.RS 4
Ignore revisions listed in the file, one unabbreviated object name per line, in
\fBgit-blame\fR(1)\&. Whitespace and comments beginning with
\fB#\fR
are ignored\&. This option may be repeated multiple times\&. Empty file names will reset the list of ignored revisions\&. This option will be handled before the command line option
\fB\-\-ignore\-revs\-file\fR\&.
.RE
.PP
blame\&.markUnblamableLines
.RS 4
Mark lines that were changed by an ignored revision that we could not attribute to another commit with a
\fI*\fR
in the output of
\fBgit-blame\fR(1)\&.
.RE
.PP
blame\&.markIgnoredLines
.RS 4
Mark lines that were changed by an ignored revision that we attributed to another commit with a
\fI?\fR
in the output of
\fBgit-blame\fR(1)\&.
.RE
.SH "SEE ALSO"
.sp
\fBgit-annotate\fR(1)
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
