Mostrar branches mesclados e não mesclados no git

Talvez você às vezes seja tão preguiçoso quanto eu e não limpe seus branches git depois de fundi-los. Talvez alguns outros membros da equipe tenham esquecido de limpar. Talvez alguns macacos tenham surgido, criado um monte de galhos e não contado a ninguém. Seja qual for o motivo, às vezes você só quer saber o que está mesclado e o que não é. Basta adicionar os seguintes aliases à sua configuração git e você obterá uma lista de branches com seu último autor e última data de commit:

unmerged = !git branch -r --no-merged | grep -v HEAD | xargs -L1 git --no-pager log --pretty=tformat:'%Cgreen%d%Creset - %h by %an (%Cblue%ar%Creset)' -1

merged
= !git branch -r --merged | grep -v HEAD | xargs -L1 git --no-pager log --pretty=tformat:'%Cgreen%d%Creset - %h by %an (%Cblue%ar%Creset)' -1

Nota: cada um dos aliases deve estar em uma linha

Bônus

Se você deseja remover branches mesclados ou não mesclados do controle remoto, você pode executar este comando:

git branch -r --merged | grep -v master | 
ruby
-ne '`git push origin #{$_.gsub("origin/", ":")}`'