#!/bin/bash # Similar to git-cherry, except that it shows unmerged commits # from all branches (including remotes). base="${1:-master}" RED="\e[1;31m" GREEN="\e[0;32m" YELLOW="\e[0;33m" BLUE="\e[1;34m" PURPLE="\e[0;35m" GRAY="\e[0;37m" NONE="\e[0;0m" for ref in $(git for-each-ref --format='%(refname)' refs/remotes); do sha1="$(git rev-parse --verify $ref)" if [ "$(git merge-base $ref $base)" = "$sha1" ]; then continue fi echo -e "$sha1: ${RED}${ref}${NONE}" git cherry -v $base $ref | while read line; do case $line in +*) echo -e $BLUE$line$NONE ;; -*) echo -e $GRAY$line$NONE ;; esac done echo done