¿Cómo get la finalización de Git para nombres de sucursales en Mac OSX?

Intenté depurar este problema sin éxito durante varios días. He hecho todo lo posible para instalar las terminaciones de git y git en mi máquina, sin embargo, aún no puedo completar automáticamente las twigs (locales o remotas). La finalización de los subcommands de git, sin embargo, funciona bien.

Tengo una Mac corriendo Sierra 10.12.5.

$ sw_vers ProductName: Mac OS X ProductVersion: 10.12.5 BuildVersion: 16F73 

Estoy usando bash, instalado a través de Homebrew.

 $ brew info bash | head -1 bash: stable 4.4.12 (bottled), HEAD 

He instalado git a través de Homebrew.

 $ brew info git | head -1 git: stable 2.13.1 (bottled), HEAD 

He instalado bash-completion a través de Homebrew.

 $ brew info bash-completion | head -1 bash-completion: stable 1.3 (bottled) 

He obtenido el script necesario.

 $ source $(brew --prefix)/etc/bash_completion 

He confirmado que git-completion.bash está de hecho en el directory bash_completion.d.

 $ ll /usr/local/etc/bash_completion.d/git-completion.bash lrwxr-xr-x 1 michael 65 Jun 18 02:19 /usr/local/etc/bash_completion.d/git-completion.bash -> ../../Cellar/git/2.13.1/etc/bash_completion.d/git-completion.bash 

Cuando uso git, veo el comportamiento correcto de autocomplete cuando bash autocomplete commands.

 $ git che{tab} checkout cherry cherry-pick 

Sin embargo, las terminaciones del nombre de la sucursal no parecen funcionar en absoluto. En cambio, la autocomplete intenta sugerir otro subcommand

 $ git checkout{tab} add annotate apply archive bisect [...list continues] 

git sabe sobre las otras twigs de este repository (remoto y local).

 $ git branch -a master * foo remotes/origin/HEAD -> origin/master remotes/origin/bar remotes/origin/foo remotes/origin/master 

Sin embargo, git no sugerirá otra twig sin importar cuántas letras insinúe.

 $ git checkout ma{tab} # => nothing $ git checkout mas{tab} # => nothing $ git checkout mast{tab} # => nothing $ git checkout maste{tab} # => nothing 

Esto está sucediendo dentro de cada repository git en mi máquina, en lugar de estar aislado en uno. Tengo los permissions necesarios para leer y escribir en estos repositorys.

He intentado desinstalar / reinstalar git y bash-completion. Intenté tomar el script canónico git-completion.bash de Github directamente y getlo en su lugar. Intenté eliminar todos mis files git dot para descartarlos.

Todas las guías con las que me he encontrado parecen implicar que mis problemas de autocomplete se resolverán descargando el último git-completion.bash (como se relacionó anteriormente) y comprándolo, pero lamentablemente eso no lo está recortando en este caso. Las terminaciones de Bash parecen funcionar normalmente para otras herramientas (por ejemplo, para tmux), por lo que creo que este problema está localizado en las terminaciones de git.

¿Me estoy perdiendo de algo? ¿Qué pasos adicionales debo seguir para activar las terminaciones para los nombres de las sucursales?

El problema es la versión de bash que estás usando. Los scripts modernos de configuration de finalización de bash requieren un bash más nuevo que el que Apple envía con macOS. Necesitas a) instalar un nuevo bash ; b) agréguelo a / etc / shells; y c) cambie el shell de su count usando chsh (o chsh Sistema> Usuarios y Grupos> desbloquear / autenticar> count con clic derecho> Opciones Avanzadas).