Há muitas respostas para essa pergunta e, como eu, aposto que muitos leitores confusos. Para o meu caso, eu também tinha o requisito de que meus dotfiles funcionassem em várias plataformas com diferentes versões do Git. Eu também não, alias g=git
mas tenhog
defini como uma função.
Para conseguir isso, tive que reunir respostas diferentes aqui em uma solução. Embora isso reitere as respostas, eu já pensei que alguém no meu barco poderia achar essa compilação útil como eu teria quando cheguei a essa pergunta.
Isso pressupõe a conclusão mais antiga e mais recente do Git, os padrões do Ubuntu e brew install git
no MacOS. No caso posterior, as conclusões concluídas instaladas pelo brew não estavam sendo processadas pelo bash (algo que vou diagnosticar mais tarde).
# Alias g to git
g() {
if [[ $# > 0 ]]; then
git "$@"
else
git status -sb
fi
}
# Preload git completion in Ubuntu which is normally lazy loaded but we need
# the __git_wrap__git_main function available for our completion.
if [[ -e /usr/share/bash-completion/completions/git ]]; then
source /usr/share/bash-completion/completions/git
elif [[ -e /usr/local/etc/bash_completion.d/git-completion.bash ]]; then
source /usr/local/etc/bash_completion.d/git-completion.bash
fi
if command_exists __git_complete; then
__git_complete g _git
elif command_exists __git_wrap__git_main; then
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g
fi