아래 내용은 다음의 블로그를 번역한 것입니다:
oliverspryn.medium.com/adding-git-completion-to-zsh-60f3b0e7ffbc
최근에 나는 shell을 기존에 사용하던 Bash에서 Zsh로 갈아탔고 내가 좋아하는 새로운 확장 기능(Powerlevel10k와 Meslo Nerd Font)을 설치한 후에 Bash에 있던 핵심 기능이 빠졌다는 것을 깨달았다. 그건 바로 Git 자동완성이다.
모든 사람이 brew가 설치되어 있어서 brew install bash-completion을 실행하고 관련 지시사항을 따를 수 없기 때문에, 어떻게 하면 Zsh에 Git 자동완성을 지원하는 데 필요한 shell 스크립트를 직접 설치했는 지를 소개하려고 한다.
관련된 파일 파악하기
Git 커뮤니티는 모든 shell의 자동완성 스크립트를 GitHub 저장소에 보관하고 있다. 해당 저장소를 확인해보면 bash와 zsh를 포함한 여러 shell을 위한 스크립트가 있다.

Bash와 Zsh는 모두 Bourne shell을 기반으로 하기 때문에 둘은 많은 유사점을 가지고 있다. git-completion.zsh 파일을 열어보면 Git이 이 사실을 아주 명확하게 한다는 것을 위에 있는 주석을 통해서 알 수 있다:
Git의 Bash 자동완성 스크립트가 어딘가에 설치되어 있어야 한다. 스크립트다 위치하는 곳은 보통 Bash 자동완성이 사용하는 위치이다.
따라서, Git 자동완성을 위해서는 두 개의 스크립트가 필요하다.
스크립트 다운로드하기
Git의 자동완성 기능을 위해서는 어떤 스크립트가 필요한지 알았으니 둘을 다운로드한다:
# 폴더 구조 만들기
mkdir -p ~/.zsh
cd ~/.zsh
# 스크립트 다운받기
curl -o git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
curl -o _git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
Shell 설정하기
Shell 스크립트를 준비한 후에는 .zshrc 파일이 우리가 원하는 기능에 대한 액세스를 제공하도록 구성할 수 있다. ~/.zshrc 파일을 열어서 아래의 코드를 추가한다:
# Git 자동완성을 load한다
zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
fpath=(~/.zsh $fpath)
autoload -Uz compinit && compinit
처음 실행할 때는 다음의 명령어를 통해서 shell의 자동완성 캐시를 지워준다:
rm ~/.zcompdump
스크립트를 저장하고 shell을 다시 실행하면 잘 작동한다는 것을 확인할 수 있다!