Try:
$ git checkout master # or whatever branch you might compare against ...
$ git branch --no-merged
$ git branch --merged
From git branch documentation:
With –merged, only branches merged into the named commit (i.e. the branches whose tip commits are reachable from the named commit) will be listed. With –no-merged only branches not merged into the named commit will be listed. If the argument is missing it defaults to HEAD (i.e. the tip of the current branch).
EDIT:
to show this for every branch, you could do something like this:
example repo:
o <--- experimental
|
o
|
o <--- next
|
o
|
o <--- master
|
o----o <--- broken
|
o
|
$ for branch in `git branch --no-color --verbose | \
sed -e 's/*//' | awk '{print $1}'`; \
do echo "[$branch]"; git checkout -q $branch; git branch --merged; done
[broken]
* broken
[master]
* master
[next]
master
* next
[experimental]
master
next
* experimental