Если вы сравните исходное дерево zsh-5.0.5 с деревом zsh-5.0.7, в отношении завершения git произойдут некоторые изменения:
$ git diff --stat zsh-5.0.5..zsh-5.0.7 | grep _git
Completion/Unix/Command/_git | 353 +++--
Functions/VCS_Info/Backends/VCS_INFO_get_data_git | 158 ++-
В заметках о выпуске упоминаются только самые важные изменения, но не каждое изменение кода. Вот сообщения коммита, в которых упоминается git (я не разбирался, какие из них актуальны для вашей проблемы ...):
33180: _git: add missing --3way option
33177: _git: fix typo in git-apply
33178: _git: updates for Git 2.1.0
33176: _git: Add missing --list to git-tag
33179: _git: updates for Git 2.0.0
33184: vcs_info git: consider patches for rebase
33188: vcs_info git: set rrn before using it
33150: completion git: fix send-email --confirm values
33145: vcs_info git: fix applied-string name
33147: vcs_info git: detect revert or cherry-pick with multiple commits
33151: completion git: support aliases when \n exist
33047: use git to simplify massively source distribution file selection
32662: vcs_info git: Fix stagedstr for empty repos
32597: vcs_info git: Describe detached heads symbolically.
32502: fix typo in argument list for git completio
32398: _git: completion updates up to latest git v1.9.0
32397: _git: fix __git_submodules to only use the actual name of the submodule
32395: _git: diff: refactor and fix wrong completions
32396: _git: fix __git_committish_range_{first,last} and __git_is_committish_range
Я могу воспроизвести поведение, которое вы описываете с zsh-5.0.5, но с zsh-5.0.7 git difftool --cac<TAB>
завершает работу, как и ожидалось, для git difftool --cached
.
Короче говоря, обновите вашу установку до zsh-5.0.7.