Hay muchas respuestas a esta pregunta y, como yo, apuesto a muchos lectores confundidos. Para mi caso, también tuve el requisito de que mis archivos dot funcionaran en múltiples plataformas con diferentes versiones de Git. Tampoco lo hago, alias g=git
sino que lo he g
definido como una función
Para lograr esto, tuve que juntar diferentes respuestas aquí en una sola solución. Aunque esto ya reitera las respuestas, pensé que alguien en mi bote podría encontrar esta compilación útil como lo habría hecho cuando llegué a esta pregunta.
Esto supone la finalización de Git más antigua y más reciente, los valores predeterminados de Ubuntu y brew install git
en MacOS. En el último caso, las terminaciones instaladas en brew no estaban siendo procesadas por bash (algo que diagnosticaré más adelante).
# 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