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] [-L n,m] [-S <revs-file>]
            [-M] [-C] [-C] [--since=<date>] [<rev>] [--] <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 occured 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.

-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 minumum 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.


SPECIFIYING 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 this:

	git blame -L 40,60 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


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

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

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