Conclusão e de onde vem pode ser bastante confuso. Pegue um sistema Ubuntu 14.04 como um exemplo:
$ dpkg -L zsh-common | grep git
/usr/share/zsh/functions/Completion/Debian/_git-buildpackage
/usr/share/zsh/functions/Completion/Unix/_stgit
/usr/share/zsh/functions/Completion/Unix/_git
/usr/share/zsh/functions/Completion/Unix/_topgit
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_get_data_git
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_detect_git
/usr/share/zsh/functions/Misc/run-help-git
O pacote zsh-common
envia as funções de conclusão. Por outro lado, o pacote git
também vem com arquivos de conclusão para bash e zsh:
$ dpkg -L git | grep compl
/etc/bash_completion.d
/etc/bash_completion.d/git-prompt
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/git
/usr/share/bash-completion/completions/gitk
Que contém arquivos como
$ head -n 5 /usr/share/bash-completion/completions/gitk
# bash/zsh completion support for core Git.
#
# Copyright (C) 2006,2007 Shawn O. Pearce <[email protected]>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
O pacote git fornece até mesmo um prompt que reconhece o git e que pode ser ativado, sem nenhum complemento especial, como o oh-my-zsh.
Para resumir, git subcommand completion pode vir do seu shell (zsh):
do git
ou de plugins como oh-my-zsh.
Para voltar à sua pergunta: O antigo comportamento de concluir git chec
que você descreve é realmente problemático. chec
ainda é ambíguo e um script de conclusão adequado não deve concluí-lo para checkout
, pois há vários subcomandos que começam com chec
. Se você quiser esse comportamento, descubra qual dos muitos scripts de conclusão que você estava usando antes, desative o plug-in git de oh-my-zsh e continue a usar seu script de conclusão antigo.
Como alternativa, recomendo configurar um alias e se acostumar com isso. Você pode usar
git config --global alias.co checkout
para tornar git co
seu novo git checkout
- o plug-in oh-my-zsh está ciente desses aliases e ainda vai completar os nomes das ramificações e tags em seguida!