Есть много ответов на этот вопрос, и я, как и я, держу пари, что многие смущенные читатели. В моем случае у меня также было требование, чтобы мои dotfiles работали на нескольких платформах с разными версиями Git. Я тоже нет, alias g=git
но вместо этогоg
определил как функцию.
Чтобы добиться этого, мне пришлось собрать воедино разные ответы в одном решении. Хотя это повторяет ответы уже, я думал, что кто-то в моей лодке мог бы счесть этот сборник полезным, как я сделал бы, когда я впервые пришел к этому вопросу.
Это предполагает более старое и новое завершение Git, Ubuntu по умолчанию и brew install git
в MacOS. В последнем случае установленные дополнения brew не обрабатывались 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