Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
# by
# this prints out some branch status (similar to the '... ahead' info you get from git status)
# example:
# $ git branch-status
# dns_check (ahead 1) | (behind 112) origin/master
# master (ahead 2) | (behind 0) origin/master
git for-each-ref --format="%(refname:short) %(upstream:short)" refs/heads | \
while read local remote
[ -z "$remote" ] && continue
git rev-list --left-right ${local}...${remote} -- 2>/dev/null >/tmp/git_upstream_status_delta || continue
LEFT_AHEAD=$(grep -c '^<' /tmp/git_upstream_status_delta)
RIGHT_AHEAD=$(grep -c '^>' /tmp/git_upstream_status_delta)
echo "$local (ahead $LEFT_AHEAD) | (behind $RIGHT_AHEAD) $remote"
if [ "$tot_diff" == "0" ]; then
echo "Everything is synchronized."

This comment has been minimized.

Copy link

@bill-auger bill-auger commented Oct 31, 2014

building on @knovoselic version - i prettified it a bit more:

  • formatted results into columns
  • added ability to filter by branch name and to show locals
  • removed the temp file i/o
  • added some switches and usage message

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.