Tab completion and aliases need not be mutually exclusive. For instance, in zsh you can use:
alias gs='git status'
compdef _git gs=git-status
FYI: I also mapped g without parameters to `git status -sb` but g with parameters will simply execute everything as normal g () {
if [ $# -eq 0 ]
then
git status -sb
else
git $*
fi
}
compdef g=git