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