Git puxar auto completo OSX

1

Siga algumas instruções neste site link . Eu posso fazer o git auto complete para o MAC OS. No entanto, quando eu digito git pull origin ma (para mestre), em seguida, tab leva muito tempo para o git completar automaticamente para se tornar git pull origin master . Eu acho que se conectar ao servidor para obter o ramo, mas não tenho certeza, existe alguma maneira de torná-lo mais rápido e só obter o ramo na máquina local

cd /tmp
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
git checkout v'git --version | awk '{print $3}''
cp contrib/completion/git-completion.bash ~/.git-completion.bash
cd ~
rm -rf /tmp/git
echo -e "source ~/.git-completion.bash" >> .profile
    
por vodkhang 05.05.2010 / 06:42

1 resposta

2

Isso é necessário por design. Quando você está executando um git-pull , o nome da ramificação que você está obtendo é uma ramificação remota. Não tem outra opção senão entrar em contato com o repositório remoto para obter a lista de possíveis conclusões.

Você pode provar isso para si mesmo se tentar concluir automaticamente um comando git-push . A conclusão do nome da ramificação master será muito mais rápida porque você está enviando uma ramificação local, portanto, não será necessário entrar em contato com o repositório remoto.

Se você quiser que o preenchimento automático sempre seja concluído usando nomes de ramificação local, você poderá alterar o comportamento. Isso pode ser útil apenas se os nomes das ramificações locais forem idênticos aos nomes das ramificações remotas. Edite o arquivo ~/.git-completion.bash e, na linha 458, procure este código:

fetch)
    if [ $lhs = 1 ]; then
        __gitcomp "$(__git_refs2 "$remote")" "$pfx" "$cur"
    else
        __gitcomp "$(__git_refs)" "$pfx" "$cur"
    fi
    ;;
pull)
    if [ $lhs = 1 ]; then
        __gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
    else
        __gitcomp "$(__git_refs)" "$pfx" "$cur"
    fi
    ;;
push)
    if [ $lhs = 1 ]; then
        __gitcomp "$(__git_refs)" "$pfx" "$cur"
    else
        __gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
    fi
    ;;
esac

... e mude para isso:

fetch)
    if [ $lhs = 1 ]; then
        __gitcomp "$(__git_refs)" "$pfx" "$cur"
    else
        __gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
    fi
    ;;
pull)
    if [ $lhs = 1 ]; then
        __gitcomp "$(__git_refs)" "$pfx" "$cur"
    else
        __gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
    fi
    ;;
push)
    if [ $lhs = 1 ]; then
        __gitcomp "$(__git_refs)" "$pfx" "$cur"
    else
        __gitcomp "$(__git_refs "$remote")" "$pfx" "$cur"
    fi
    ;;
esac

(Observe que alteramos as seções "fetch" e "pull" para usar a mesma lógica de "push". Isso significa que ele estará procurando nomes de ramificações locais em vez de ramificações remotas.)

    
por 05.05.2010 / 06:56