Відповідей на це питання дуже багато, і, як і я, я ставлю на облік чимало розгублених читачів. У моєму випадку у мене також була вимога, щоб мої dotfiles працювали на декількох платформах з різними версіями Git. Я також не став, alias g=git
але натомість g
визначив як функцію.
Для цього мені довелося поєднати тут різні відповіді в одне рішення. Хоча це ще раз повторює відповіді, я вважав, що хтось у моїм човні може вважати цю компіляцію корисною, як і коли б я вперше прийшов до цього питання.
Це передбачає старіші та новіші версії Git, налаштування за замовчуванням Ubuntu та brew install git
на MacOS. У більш пізньому випадку встановлені варіння комплекти не оброблялися bash (те, що я діагностуватиму пізніше).
# 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