L'achèvement et son origine peuvent être assez confus. Prenons l'exemple d'un système Ubuntu 14.04 :
$ 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
En zsh-common
Le paquet contient des fonctions de complétion de git. D'autre part, le paquet git
Le paquet est également fourni avec des fichiers de complétion pour bash et 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
Qui contient des fichiers tels que
$ head -n 5 /usr/share/bash-completion/completions/gitk
# bash/zsh completion support for core Git.
#
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
Le paquet git fournit même une invite consciente de git qui peut être activée, le tout sans ajouts fantaisistes tels que oh-my-zsh.
Pour résumer, la complétion des sous-commandes git peut provenir de votre Shell (zsh) :
https://github.com/zsh-users/zsh/blob/master/Completion/Unix/Command/_git
de git
https://github.com/git/git/tree/master/contrib/completion
ou à partir de plugins tels que oh-my-zsh.
Pour en revenir à votre question : L'ancien comportement consistant à compléter git chec
que vous décrivez est en fait un bogue. chec
est toujours ambiguë et une complétion correcte script ne devrait pas la compléter pour checkout
puisqu'il existe plusieurs sous-commandes qui commencent par chec
. Si vous voulez ce comportement, trouvez laquelle des nombreuses complétions scripts existantes vous utilisiez avant, désactivez le plugin git oh-my-zsh et continuez à utiliser votre ancienne complétion scripts.
Sinon, je vous recommande de créer un alias et de vous y habituer. Vous pouvez utiliser
git config --global alias.co checkout
de faire git co
votre nouvelle git checkout
- le plugin oh-my-zsh est conscient de ces alias et complètera toujours les noms de branches et de tags ensuite !