tipos tag qué practices existen etiquetas eliminar crear commits commands best macos git autocomplete zsh

macos - tag - qué tipos de etiquetas existen en git



El `git` de Homebrew no usa terminación (12)

Cuando uso el git de OSX, después de modificar un archivo simplemente puedo hacer git commit <tab> , y eso completará automáticamente el nombre del archivo al que se modificó. Sin embargo, si instalo una versión más nueva de git de homebrew y la uso, esa característica ya no funciona (es decir, presiono <tab> y simplemente me "pregunta" en qué archivo quiero hacerlo, incluso aquellos que no tener cambios).

¿Alguien puede arrojar algo de luz sobre por qué y cómo resolver eso? Preferiría usar git de homebrew, ya que está más actualizado.

Mi shell es zsh, y no funcionó instalar bash-completion o zsh-completions (incluso después de seguir las instrucciones posteriores a la instalación de homebrew).

Además, después de instalar git con homebrew dice

Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions

Entonces, ¿no debería ser capaz de usar uno de esos?


En caso de que alguien más haga mi tonto error, pruebe brew install git . Estaba usando el git que viene con Xcode y no me di cuenta de que nunca había instalado el git de Homebrew para obtener las autocompletaciones.


Encontré una solución de trabajo. Es muy reciente (fue creado hace 16 horas y se cometió hace 2 horas), y proviene directamente de homebrew .

brew install git --without-completions

Acabo de probarlo, y finalmente funciona según lo previsto.


Esta es la finalización de la pestaña git de trabajar en OSX sin tener que reiniciar tu terminal:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile


Estas buscando:

brew install git bash-completion

Como dice el comentario de warpc, deberás agregar lo siguiente a tu ~/.bash_profile para que funcione el bash-completion de homebrew:

if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi

Lo anterior se menciona en las advertencias cuando instala la fórmula de finalización de bash.


Para aquellos que ya tienen instalado brew bash-completion. No tenía instalado el script de finalización de git y no pude encontrar ningún toque para eso.

Entonces lo agregué manualmente:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o $(brew --prefix)/etc/bash_completion.d/git

Tenga en cuenta que debe cambiar el nombre del archivo y eliminar la extensión para que funcione.

Si no tiene completitud o git instalado, instálelo en la respuesta aceptada.

brew install git bash-completion


Para mí, tuve que poner

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

en .bashrc (no .bash_profile) para hacer que esto funcione.

".bash_profile se ejecuta para shells de inicio de sesión, mientras que .bashrc se ejecuta para shells interactivos que no son de inicio de sesión" - from ¿Cuál es la diferencia entre .bash_profile y .bashrc? Me parece que MacOS Sierra no ejecuta .bash_profile al abrir una nueva ventana de terminal, solo .bashrc .

No lo pondría en _bash_profile, porque entonces tendría que reiniciar / cerrar la sesión para que las actualizaciones tuvieran efecto.


Paso 1: descargar el script de autocompletado:

cd ~ curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

Paso 2: actualiza .bash_profile y .bashrc

echo "source ~/git-completion.bash" >> .bash_profile echo "source ~/git-completion.bash" >> .bashrc

Esto funcionará como un encanto

A través de https://www.anintegratedworld.com/git-tab-autocomplete-on-osx-10-11-el-capitan/


Puede tener algo que ver con la utilización de libedit en lugar de readline en Lion.

Intenta instalar readline antes de git.

brew install readline


Resolví el problema al descubrir que $(brew --prefix)/etc/bash_completion devolvió el Permission denied al ejecutarse. Entonces después de un simple:

chmod +x $(brew --prefix)/etc/bash_completion

Todo está funcionando bien. Me pregunto por qué Homebrew no hace que el archivo bash_completion ejecutable durante la instalación.


Si tiene $BASH_VERSION <4.1, por ejemplo, 3.2.57(1)-release , continúe con:

brew install bash-completion # In ~/.bash_profile : if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi

Sin embargo, si ha brew install bash para obtener la versión 4.4.12(1)-release , puede utilizar las mejores y más completas terminaciones en:

brew install bash-completion@2 # In ~/.bash_profile: [ -f "$(brew --prefix)/share/bash-completion/bash_completion" ] / && . "$(brew --prefix)/share/bash-completion/bash_completion"

Tenga en cuenta que algunos paquetes (brew, docker, tmux) todavía incluirán algunas terminaciones en $(brew --prefix)/etc/bash_completion.d/ por lo que podría agregar:

for completion in "$(brew --prefix)/etc/bash_completion.d/"* do . $completion done

Finalmente, debería poder agregar el script de finalización de git si, por algún motivo, la forma en que instaló git no lo agregó a ninguno de los siguientes:

[[ -f $(brew --prefix)/etc/bash_completion.d/git / || -f $(brew --prefix)/share/bash-completion/completions/git ]] / || curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash / -o $(brew --prefix)/etc/bash_completion.d/git

Puedes obtenerlo y agregarlo con lo anterior.


Tuve el mismo problema e incluso encontré esta publicación esta mañana. Solucioné el problema actualizando brew con brew update y luego reinstalando git con brew reinstall git .

Luego me notificaron sobre otro archivo que está bloqueando el proceso de enlace homebrew, en mi caso fue /usr/local/share/zsh/site-functions/git-completion.bash . Eliminar el archivo y ejecutar brew link git resolvió el problema. Supongo que fue solo una mala versión de receta con la que tropezamos.


por alguna razón me faltaba el archivo en $(brew --prefix)/etc/bash_completion por lo que la respuesta correcta de @Graham Perks no funcionó para mí

Terminó la solución en mi caso era:

brew unlink bash-completion brew link bash-completion