git-blame(1)
============

NAME
----
git-blame - Show what revision and author last modified each line of a file

SYNOPSIS
--------
[verse]
'git-blame' [-c] [-l] [-t] [-f] [-n] [-p] [--incremental] [-L n,m] [-S <revs-file>]
            [-M] [-C] [-C] [--since=<date>] [<rev> | --contents <file>] [--] <file>

DESCRIPTION
-----------

Annotates each line in the given file with information from the revision which
last modified the line. Optionally, start annotating from the given revision.

Also it can limit the range of lines annotated.

This report doesn't tell you anything about lines which have been deleted or
replaced; you need to use a tool such as gitlink:git-diff[1] or the "pickaxe"
interface briefly mentioned in the following paragraph.

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:

-----------------------------------------------------------------------------
$ git log --pretty=oneline -S'blame_usage'
5040f17eba15504bad66b14a645bddd9b015ebb7 blame -S <ancestry-file>
ea4c7f9bf69e781dd0cd88d2bccb2bf5cc15c9a7 git-blame: Make the output
-----------------------------------------------------------------------------

OPTIONS
-------
-c, --compatibility::
	Use the same output mode as gitlink:git-annotate[1] (Default: off).

-L n,m::
	Annotate only the specified line range (lines count from 1).

-l, --long::
	Show long rev (Default: off).

-t, --time::
	Show raw timestamp (Default: off).

-S, --rev-file <revs-file>::
	Use revs from revs-file instead of calling gitlink:git-rev-list[1].

-f, --show-name::
	Show filename in the original commit.  By default
	filename is shown if there is any line that came from a
	file with different name, due to rename detection.

-n, --show-number::
	Show line number in the original commit (Default: off).

-p, --porcelain::
	Show in a format designed for machine consumption.

--incremental::
	Show the result incrementally in a format designed for
	machine consumption.

--contents <file>::
	When <rev> is not specified, the command annotates the
	changes starting backwards from the working tree copy.
	This flag makes the command pretend as if the working
	tree copy has the contents of he named file (specify
	`-` to make the command read from the standard input).

-M::
	Detect moving lines in the file as well.  When a commit
	moves a block of lines in a file (e.g. the original file
	has A and then B, and the commit changes it to B and
	then A), traditional 'blame' algorithm 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.

-C::
	In addition to `-M`, detect lines 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 looks for copies from all other files in the
	parent for the commit that creates the file in addition.

-h, --help::
	Show help message.


THE PORCELAIN FORMAT
--------------------

In this format, each line is output after a header; the
header at the minimum has the first line which has:

- 40-byte SHA-1 of the commit the line is attributed to;
- the line number of the line in the original file;
- the line number of the line in the final file;
- on a line that starts a group of line from a different
  commit than the previous one, the number of lines in this
  group.  On subsequent lines this field is absent.

This header line is followed by the following information
at least once for each commit:

- author name ("author"), email ("author-mail"), time
  ("author-time"), and timezone ("author-tz"); similarly
  for committer.
- filename in the commit the line is attributed to.
- the first line of the commit log message ("summary").

The contents of the actual line is output after the above
header, prefixed by a TAB. This is to allow adding more
header elements later.


SPECIFYING RANGES
-----------------

Unlike `git-blame` and `git-annotate` in older git, the extent
of annotation can be limited to both line ranges and revision
ranges.  When you are interested in finding the origin for
ll. 40-60 for file `foo`, you can use `-L` option like these
(they mean the same thing -- both ask for 21 lines starting at
line 40):

	git blame -L 40,60 foo
	git blame -L 40,+21 foo

Also you can use regular expression to specify the line range.

	git blame -L '/^sub hello {/,/^}$/' foo

would limit the annotation to the body of `hello` subroutine.

When you are not interested in changes older than the version
v2.6.18, or changes older than 3 weeks, you can use revision
range specifiers  similar to `git-rev-list`:

	git blame v2.6.18.. -- foo
	git blame --since=3.weeks -- foo

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.

A particularly useful way is to see if an added file have 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:

	git log --diff-filter=A --pretty=short -- foo

and then annotate the change between the commit and its
parents, using `commit{caret}!` notation:

	git blame -C -C -f $commit^! -- foo


INCREMENTAL OUTPUT
------------------

When called with `--incremental` 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.

The output format is similar to the Porcelain format, but it
does not contain the actual lines from the file that is being
annotated.

. Each blame entry always starts with a line of:

	<40-byte hex sha1> <sourceline> <resultline> <num_lines>
+
Line numbers count from 1.

. The first time that 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 about that "extended commit info" (author,
  email, committer, dates, summary etc).

. Unlike Porcelain format, the filename information is always
  given and terminates the entry:

	"filename" <whitespace-quoted-filename-goes-here>
+
and thus it's really quite easy to parse for some line- and word-oriented
parser (which should be quite natural for most scripting languages).
+
[NOTE]
For people who do parsing: to make it more robust, just ignore any
lines in between the first and last one ("<sha1>" and "filename" lines)
where you don't 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 won't ever care.


SEE ALSO
--------
gitlink:git-annotate[1]

AUTHOR
------
Written by Junio C Hamano <junkio@cox.net>

GIT
---
Part of the gitlink:git[7] suite
