GIT-SHOW-BRANCH(1)

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

SYNOPSIS

git-show-branch [--all] [--heads] [--tags] [--topo-order] [--current]
                [--more=<n> | --list | --independent | --merge-base]
                [--no-name | --sha1-name] [<rev> | <glob>]...

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 git-rev-parse) 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.

--all --heads --tags
    Show all refs under $GIT_DIR/refs, $GIT_DIR/refs/heads, and $GIT_DIR/refs/tags, respectively.

--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. 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. "fixes" branch adds one commit Introduce "reset type". "mhf" branch has 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.

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

DOCUMENTATION
Documentation by Junio C Hamano.

GIT
Part of the git(7) suite