Completion and where it comes from can be rather confusing. Take a Ubuntu 14.04 system as an example:
$ dpkg -L zsh-common | grep git
zsh-common package ships git completion functions. On the other hand, the
git package also comes with completion files for bash and zsh:
$ dpkg -L git | grep compl
Which contains files such as
$ head -n 5 /usr/share/bash-completion/completions/gitk
# bash/zsh completion support for core Git.
# Copyright (C) 2006,2007 Shawn O. Pearce <firstname.lastname@example.org>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
The git package even provides a git aware prompt which can be enabled, all without fancy addons such as oh-my-zsh.
To summarize, git subcommand completion can come from your shell (zsh):
or from plugins such as oh-my-zsh.
To get back to your question: The old behavior of completing
git chec that you describe is actually buggy.
chec is still ambiguous and a proper completion script should not complete it to
checkout, since there are multiple subcommands that begin with
chec. If you want that behavior, find out which of the many completion scripts out there you were using before, disable the oh-my-zsh git plugin and continue to use your old completion script.
Alternatively, I'd recommend to set up an alias and get used to it. You can use
git config --global alias.co checkout
git co your new
git checkout - the oh-my-zsh plugin is aware of these aliases and will still complete branch and tag names next!