-b::
	Show blank SHA-1 for boundary commits.  This can also
	be controlled via the `blame.blankboundary` config option.

--root::
	Do not treat root commits as boundaries.  This can also be
	controlled via the `blame.showroot` config option.

--show-stats::
	Include additional statistics at the end of blame output.

-L <start>,<end>::
	Annotate only the given line range.  <start> and <end> can take
	one of these forms:

	- number
+
If <start> or <end> is a number, it specifies an
absolute line number (lines count from 1).
+

- /regex/
+
This form will use the first line matching the given
POSIX regex.  If <end> is a regex, it will search
starting at the line given by <start>.
+

- +offset or -offset
+
This is only valid for <end> and will specify a number
of lines before or after the line given by <start>.
+

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

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

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

--reverse::
	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.

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

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

--encoding=<encoding>::
	Specifies the encoding used to output author names
	and commit summaries. Setting it to `none` makes blame
	output unconverted data. For more information see the
	discussion about encoding in the linkgit:git-log[1]
	manual page.

--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 the named file (specify
	`-` to make the command read from the standard input).

-M|<num>|::
	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), the 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.
+
<num> is optional but it is the lower bound on the number of
alphanumeric characters that git must detect as moving
within a file for it to associate those lines with the parent
commit.

-C|<num>|::
	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 additionally looks for copies from all other
	files in the parent for the commit that creates the file.
+
<num> is optional but it is the lower bound on the number of
alphanumeric characters that git must detect as moving
between files for it to associate those lines with the parent
commit.

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