Documentation / git-show-branch.txton commit git-commit: allow --only to lose what was staged earlier. (158d057)
   1git-show-branch(1)
   2==================
   3
   4NAME
   5----
   6git-show-branch - Show branches and their commits
   7
   8SYNOPSIS
   9--------
  10[verse]
  11'git-show-branch' [--all] [--heads] [--tags] [--topo-order] [--current]
  12                [--more=<n> | --list | --independent | --merge-base]
  13                [--no-name | --sha1-name] [<rev> | <glob>]...
  14
  15DESCRIPTION
  16-----------
  17
  18Shows the commit ancestry graph starting from the commits named
  19with <rev>s or <globs>s (or all refs under $GIT_DIR/refs/heads
  20and/or $GIT_DIR/refs/tags) semi-visually.
  21
  22It cannot show more than 29 branches and commits at a time.
  23
  24It uses `showbranch.default` multi-valued configuration items if
  25no <rev> nor <glob> is given on the command line.
  26
  27
  28OPTIONS
  29-------
  30<rev>::
  31        Arbitrary extended SHA1 expression (see `git-rev-parse`)
  32        that typically names a branch HEAD or a tag.
  33
  34<glob>::
  35        A glob pattern that matches branch or tag names under
  36        $GIT_DIR/refs.  For example, if you have many topic
  37        branches under $GIT_DIR/refs/heads/topic, giving
  38        `topic/*` would show all of them.
  39
  40--all --heads --tags::
  41        Show all refs under $GIT_DIR/refs, $GIT_DIR/refs/heads,
  42        and $GIT_DIR/refs/tags, respectively.
  43
  44--current::
  45        With this option, the command includes the current
  46        branch to the list of revs to be shown when it is not
  47        given on the command line.
  48
  49--topo-order::
  50        By default, the branches and their commits are shown in
  51        reverse chronological order.  This option makes them
  52        appear in topological order (i.e., descendant commits
  53        are shown before their parents).
  54
  55--sparse::
  56        By default, the output omits merges that are reachable
  57        from only one tip being shown.  This option makes them
  58        visible.
  59
  60--more=<n>::
  61        Usually the command stops output upon showing the commit
  62        that is the common ancestor of all the branches.  This
  63        flag tells the command to go <n> more common commits
  64        beyond that.  When <n> is negative, display only the
  65        <reference>s given, without showing the commit ancestry
  66        tree.
  67
  68--list::
  69        Synonym to `--more=-1`
  70
  71--merge-base::
  72        Instead of showing the commit list, just act like the
  73        'git-merge-base -a' command, except that it can accept
  74        more than two heads.
  75
  76--independent::
  77        Among the <reference>s given, display only the ones that
  78        cannot be reached from any other <reference>.
  79
  80--no-name::
  81        Do not show naming strings for each commit.
  82
  83--sha1-name::
  84        Instead of naming the commits using the path to reach
  85        them from heads (e.g. "master~2" to mean the grandparent
  86        of "master"), name them with the unique prefix of their
  87        object names.
  88
  89Note that --more, --list, --independent and --merge-base options
  90are mutually exclusive.
  91
  92
  93OUTPUT
  94------
  95Given N <references>, the first N lines are the one-line
  96description from their commit message.  The branch head that is
  97pointed at by $GIT_DIR/HEAD is prefixed with an asterisk `*`
  98character while other heads are prefixed with a `!` character.
  99
 100Following these N lines, one-line log for each commit is
 101displayed, indented N places.  If a commit is on the I-th
 102branch, the I-th indentation character shows a `+` sign;
 103otherwise it shows a space.  Merge commits are denoted by
 104a `-` sign.  Each commit shows a short name that
 105can be used as an extended SHA1 to name that commit.
 106
 107The following example shows three branches, "master", "fixes"
 108and "mhf":
 109
 110------------------------------------------------
 111$ git show-branch master fixes mhf
 112* [master] Add 'git show-branch'.
 113 ! [fixes] Introduce "reset type" flag to "git reset"
 114  ! [mhf] Allow "+remote:local" refspec to cause --force when fetching.
 115---
 116  + [mhf] Allow "+remote:local" refspec to cause --force when fetching.
 117  + [mhf~1] Use git-octopus when pulling more than one heads.
 118 +  [fixes] Introduce "reset type" flag to "git reset"
 119  + [mhf~2] "git fetch --force".
 120  + [mhf~3] Use .git/remote/origin, not .git/branches/origin.
 121  + [mhf~4] Make "git pull" and "git fetch" default to origin
 122  + [mhf~5] Infamous 'octopus merge'
 123  + [mhf~6] Retire git-parse-remote.
 124  + [mhf~7] Multi-head fetch.
 125  + [mhf~8] Start adding the $GIT_DIR/remotes/ support.
 126*++ [master] Add 'git show-branch'.
 127------------------------------------------------
 128
 129These three branches all forked from a common commit, [master],
 130whose commit message is "Add 'git show-branch'.  "fixes" branch
 131adds one commit 'Introduce "reset type"'.  "mhf" branch has many
 132other commits.  The current branch is "master".
 133
 134
 135EXAMPLE
 136-------
 137
 138If you keep your primary branches immediately under
 139`$GIT_DIR/refs/heads`, and topic branches in subdirectories of
 140it, having the following in the configuration file may help:
 141
 142------------
 143[showbranch]
 144        default = --topo-order
 145        default = heads/*
 146
 147------------
 148
 149With this, `git show-branch` without extra parameters would show
 150only the primary branches.  In addition, if you happen to be on
 151your topic branch, it is shown as well.
 152
 153
 154
 155Author
 156------
 157Written by Junio C Hamano <junkio@cox.net>
 158
 159
 160Documentation
 161--------------
 162Documentation by Junio C Hamano.
 163
 164
 165GIT
 166---
 167Part of the gitlink:git[7] suite