Tab completa seus commits git recentes

Se você gosta de completar o bash, pode fazer o seu próprio. Tenho tentado fazer uma conclusão de bash para tornar mais fácil enviar um commit específico do git. Meu antigo fluxo de trabalho para enviar um commit específico costumava ser este:

  1. rebase, mova os commits
  2. git log, veja o id do commit, copie o id
  3. git push origin <commit-id>: master

Cansei de fazer isso, então criei esta conclusão do bash: https://gist.github.com/joeheyming/5a3892afda9db4789987

function pushCommit() {
git push origin $1
:master;
}
function _pushCommit() {
local RECENT_COMMITS=`git log --pretty=oneline master..HEAD`

COMPREPLY
=()
local cur
cur
=$(_get_cword)

local OLDIFS="$IFS"
local IFS=$'n'
COMPREPLY
=( $( compgen -W "$RECENT_COMMITS" -- "$cur" ) )
IFS
="$OLDIFS"
if [[ ${#COMPREPLY[*]} -eq 1 ]]; then #Only one completion
COMPREPLY
=( ${COMPREPLY[0]%% *} ) #Remove ' ' and everything after
fi
return 0
}
complete
-F _pushCommit pushCommit

Agora, basta digitar minha função:
bash pushCommit <<TAB>> 1804c645dcbac9dd361c29ae1531ff96e8 Fixed the bug. 6690badf47395ecde6fd7d8d81fbf8a0a7 Super cool new feature.

e vejo os commits mais recentes em meu branch até meu master local. (com o assunto do commit)

Experimente! O que você acha? Eu gostaria de saber se você tem problemas semelhantes com outros comandos git.