git-show-branch(1)
==================

NAME
----
git-show-branch - Show branches and their commits

SYNOPSIS
--------
[verse]
'git show-branch' [--all] [--remotes] [--topo-order] [--current]
		[--more=<n> | --list | --independent | --merge-base]
		[--no-name | --sha1-name] [--topics] [<rev> | <glob>]...
'git show-branch' (-g|--reflog)[=<n>[,<base>]] [--list] [<ref>]

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

Shows the commit ancestry graph starting from the commits named
with <rev>s or <globs>s (or all refs under $GIT_DIR/refs/heads
and/or $GIT_DIR/refs/tags) semi-visually.

It cannot show more than 29 branches and commits at a time.

It uses `showbranch.default` multi-valued configuration items if
no <rev> nor <glob> is given on the command line.


OPTIONS
-------
<rev>::
	Arbitrary extended SHA1 expression (see linkgit:git-rev-parse[1])
	that typically names a branch head or a tag.

<glob>::
	A glob pattern that matches branch or tag names under
	$GIT_DIR/refs.  For example, if you have many topic
	branches under $GIT_DIR/refs/heads/topic, giving
	`topic/*` would show all of them.

-r::
--remotes::
	Show the remote-tracking branches.

-a::
--all::
	Show both remote-tracking branches and local branches.

--current::
	With this option, the command includes the current
	branch to the list of revs to be shown when it is not
	given on the command line.

--topo-order::
        By default, the branches and their commits are shown in
        reverse chronological order.  This option makes them
        appear in topological order (i.e., descendant commits
        are shown before their parents).

--sparse::
	By default, the output omits merges that are reachable
	from only one tip being shown.  This option makes them
	visible.

--more=<n>::
	Usually the command stops output upon showing the commit
	that is the common ancestor of all the branches.  This
	flag tells the command to go <n> more common commits
	beyond that.  When <n> is negative, display only the
	<reference>s given, without showing the commit ancestry
	tree.

--list::
	Synonym to `--more=-1`

--merge-base::
	Instead of showing the commit list, just act like the
	'git-merge-base -a' command, except that it can accept
	more than two heads.

--independent::
	Among the <reference>s given, display only the ones that
	cannot be reached from any other <reference>.

--no-name::
	Do not show naming strings for each commit.

--sha1-name::
	Instead of naming the commits using the path to reach
	them from heads (e.g. "master~2" to mean the grandparent
	of "master"), name them with the unique prefix of their
	object names.

--topics::
	Shows only commits that are NOT on the first branch given.
	This helps track topic branches by hiding any commit that
	is already in the main line of development.  When given
	"git show-branch --topics master topic1 topic2", this
	will show the revisions given by "git rev-list {caret}master
	topic1 topic2"

-g::
--reflog[=<n>[,<base>]] [<ref>]::
	Shows <n> most recent ref-log entries for the given
	ref.  If <base> is given, <n> entries going back from
	that entry.  <base> can be specified as count or date.
	When no explicit <ref> parameter is given, it defaults to the
	current branch (or `HEAD` if it is detached).

Note that --more, --list, --independent and --merge-base options
are mutually exclusive.


OUTPUT
------
Given N <references>, the first N lines are the one-line
description from their commit message.  The branch head that is
pointed at by $GIT_DIR/HEAD is prefixed with an asterisk `*`
character while other heads are prefixed with a `!` character.

Following these N lines, one-line log for each commit is
displayed, indented N places.  If a commit is on the I-th
branch, the I-th indentation character shows a `+` sign;
otherwise it shows a space.  Merge commits are denoted by
a `-` sign.  Each commit shows a short name that
can be used as an extended SHA1 to name that commit.

The following example shows three branches, "master", "fixes"
and "mhf":

------------------------------------------------
$ git show-branch master fixes mhf
* [master] Add 'git show-branch'.
 ! [fixes] Introduce "reset type" flag to "git reset"
  ! [mhf] Allow "+remote:local" refspec to cause --force when fetching.
---
  + [mhf] Allow "+remote:local" refspec to cause --force when fetching.
  + [mhf~1] Use git-octopus when pulling more than one heads.
 +  [fixes] Introduce "reset type" flag to "git reset"
  + [mhf~2] "git fetch --force".
  + [mhf~3] Use .git/remote/origin, not .git/branches/origin.
  + [mhf~4] Make "git pull" and "git fetch" default to origin
  + [mhf~5] Infamous 'octopus merge'
  + [mhf~6] Retire git-parse-remote.
  + [mhf~7] Multi-head fetch.
  + [mhf~8] Start adding the $GIT_DIR/remotes/ support.
*++ [master] Add 'git show-branch'.
------------------------------------------------

These three branches all forked from a common commit, [master],
whose commit message is "Add \'git show-branch\'". The "fixes"
branch adds one commit "Introduce "reset type" flag to "git reset"".
The "mhf" branch adds many other commits. The current branch
is "master".


EXAMPLE
-------

If you keep your primary branches immediately under
`$GIT_DIR/refs/heads`, and topic branches in subdirectories of
it, having the following in the configuration file may help:

------------
[showbranch]
	default = --topo-order
	default = heads/*

------------

With this, `git show-branch` without extra parameters would show
only the primary branches.  In addition, if you happen to be on
your topic branch, it is shown as well.

------------
$ git show-branch --reflog="10,1 hour ago" --list master
------------

shows 10 reflog entries going back from the tip as of 1 hour ago.
Without `--list`, the output also shows how these tips are
topologically related with each other.


Author
------
Written by Junio C Hamano <gitster@pobox.com>


Documentation
--------------
Documentation by Junio C Hamano.


GIT
---
Part of the linkgit:git[1] suite
