En mi máquina Linux tengo autocompletado para ramas con Git.
[Note que estamos hablando de finalización de rama de git, no finalización de bash (por ejemplo, comandos, archivos, etc.). Por lo tanto, NO respuesta de Lane en absoluto]
Por ejemplo, puedo escribir git checkout
+ TAB y obtener una lista de ramas.
O puedo escribir git checkout feb*
+ TAB para obtener todos ramas que comienzan con «feb».
¿Cómo puedo obtener esta funcionalidad en una Mac?
Intenté descargar y ejecutar bash-completion/bash_completion
y bash-completion/bash_completion.sh.in
pero sin alegría. El primero mostró mensajes de error sobre declare: -A invalid_option
. El segundo no dio errores. Cuando git checkout
+ TAB aunque todavía obtengo una lista de archivos en el directorio, no ramas. Estoy en la raíz del proyecto.
Autocompletar para directorios y Los comandos bash funcionan bien, por lo que es específico de Git.
Comentarios
- Me acabo de unir a esta comunidad, así que no puedo ‘ responder todavía, pero encontré » oh-my-zsh » para ser súper súper útil y realmente me gusta la interfaz de usuario: github.com/ohmyzsh/ohmyzsh Esto es, por supuesto, para personas que usan zsh. Yo ‘ asumo que no ‘ no funciona para bash …
Respuesta
ok, entonces necesitaba el script de autocompletado git .
Lo obtuve de esta url:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
No hay necesidad de preocuparse por el directorio en el que se encuentra cuando ejecuta esto como su directorio de inicio (~
) se usa con el objetivo.
Luego agregué a mi archivo ~/.bash_profile
el siguiente código» ejecutar si existe «:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Actualización: estoy haciendo estos fragmentos de código más concisos para reducir mi archivo .bashrc
, en este caso Ahora uso:
test -f ~/.git-completion.bash && . $_
Nota: $_
significa el último argumento del comando anterior. entonces . $_
significa ejecutarlo – «it» es .git-completion.bash
en este caso
Esto todavía funciona tanto en Ubuntu como OSX y en máquinas sin el script .git-completion.bash
script.
Ahora git
Tab ( en realidad, «s git
Tab Tab ) funciona como un encanto.
ps: Si esto no «No trabajes de inmediato, es posible que debas ejecutar chmod u+x ~/.git-completion.bash
para otorgarte el permiso necesario:
-
chmod
es el comando que modifica los permisos del archivo -
u
significa el usuario que posee el archivo, por defecto su creador, es decir, usted -
+
significa establecer / activar / agregar un permiso -
x
significa permiso de ejecución, es decir, la capacidad de ejecutar el script
Comentarios
- Sí, reiniciar el terminal después de agregar el script bash lo hizo funcionar. Estaba sentado aquí preguntándome por qué seguía intentando autocompletar en mi carpeta
Models
cuando presioném
Tab
para que se autocomplete enmaster
. - Consulte también unix.stackexchange.com/q/ 48862/10043 para una sugerencia diferente
- Si la respuesta aceptada no ‘ no funciona para nadie, intente esto:
source ~/.bash_profile
después de pegar el código. Reiniciar la terminal también hará lo mismo. - ¡Gracias! Probé algunas otras cosas pero nada funcionó (incluido este github.com/bobthecow/git-flow-completion/wiki/… ). Tu solución funcionó a la perfección;)
- (no ‘ no tienes brebaje
git
pero Applegit
)brew install git
y reinicie el terminal para aquellos que enfrentan errores extraños comogit checunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>]
Respuesta
Algunas personas prefieren usar un administrador de paquetes para automatizar la instalación, actualización y configuración de paquetes de Mac OS. Soy un fanático de los administradores de paquetes, y creo que Homebrew es el mejor administrador de paquetes para Mac OS (algunos dirían que es el administrador de paquetes de Mac OS de facto).
Una vez que haya instalado Homebrew, simplemente puede instalar git junto con bash-deployment con brew install git bash-completion
.
Luego, deberá ingresar lo siguiente en su ~/.bash_profile
:
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi
(Nota: si esta instalación falla con un error 404, y ya tiene git instalado, simplemente elimine la parte de git de esta instalación de preparación)
Más información sobre la instalación de git y bash-complete con brew aquí.
Comentarios
- Añadiendo
git
y agregarbash-completion
no es en absoluto lo mismo que agregar.git-completion.bash
Son programas diferentes y hacen cosas bastante diferentes: uno hace el comando bash autocompletado y el otro hace el comando git autocompletado y ‘ nair los dos se encontrarán;) - trabajando como un encanto, muchas gracias. ¿Podría explicarnos cuál es el uso del script que me has agregado en
~/.bash_profile
? - A pesar de lo que otros han dicho sobre esta respuesta, es el que hizo que git autocomplete funcionara. n terminal.
- Note que las líneas para agregar en
~/.bash_profile
fueron especificadas para mí en la salida de homebrew. Los usé en lugar de las líneas de arriba. Luego, debe volver a cargar el perfil de bash en cada ventana de terminal en la que le gustaría usar el autocompletado, usando el comandosource ~/.bash_profile
Respuesta
Ejecute esto en la terminal:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Luego, haga esto:
vi ~/.bash_profile
Agregue estas líneas:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Eso es todo. Esto funcionó para mí.
Comentarios
- (2do paso) Si alguien prefiere abrir bash_profile con un editor de texto, simplemente haga esto: open -e .bash_profile
- En un Mac OS High Sierra virgen, el
~/.bash_profile
archivo no ‘ t existe. Eso ‘ está bien, simplemente cree el archivo y coloque el scriptif
allí y guárdelo. Vuelva a cargar su shell después y funcionará. - Esto funcionó para yo. En lugar de vi (con el que siempre lucho) simplemente abre -e ~ / .bash_profile
- Para el segundo paso necesitarás este enlace
Responder
git
y git-completion.bash
ya vienen con herramientas de línea de comandos de macOS (xcode-select --install
). Para habilitar el autocompletado de bash, agregue esto a su ~/.bash_profile
.
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
Esto también habilitará el autocompletado para las ramas de git.
Comentarios
- Estoy bastante seguro de que ‘ ve herramientas de línea de comandos instaladas, pero ese archivo no ‘ t existe en mi caso. Sin embargo, feliz de ir con brew (y dado que mi git también está con brew, quizás también sea más sabio).
- ¡Gracias! En mi opinión, esta debería ser la respuesta con la marca de verificación verde.
- Esta es la solución más sencilla y funciona para mí
- Esto funcionó para mí, aunque utilicé un formato ligeramente diferente .
if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash > /dev/null fi
- para mí la respuesta funcionó, pero después de agregar la línea dada a
~/.bash_profile
no olvide ejecutar tambiénsource ~/.bash_profile
(especialmente si crea el archivo~/.bash_profile
por primera vez)
Respuesta
Esto es lo que confunde a algunos de ustedes: tienen brew o ports instalados, pero están usando un git del sistema en /usr/bin/
. Para verificar esto:
which git
Si ve /usr/bin/git
, entonces o bien brew no está «configurado correctamente, o usted» no he instalado git a través de brew.
Si instala git a través de brew, habilitar las finalizaciones de bash para brew también habilitará las finalizaciones de bash para git. Esto se debe a que /usr/local/etc/bash_completion
en realidad obtiene todo en /usr/local/bash_completion.d
, y el paquete brew para git instala un script de finalización de git allí.
Comentarios
- Esto tiene sentido, pero ¿cómo » habilitarías las finalizaciones de bash para brew «? Usted ‘ no sabe cómo hacer eso, esto debería ser parte de su respuesta
- Acabo de hacer esto (funciona, gracias) a través de simplified.guide/macos/bash-completion , pero la finalización automática se retrasa un par de segundos … impar
Respuesta
Autocompletado de Git en Catalina y más reciente (usando Homebrew)
macOs cambiado de bash a zsh como shell predeterminado comenzando con Catalina.
Así que necesita scripts de autocompletar específicos para zsh.
Aquí se explica cómo instalarlos con Homebrew:
brew install zsh-completion
Brew «s zsh-complete de hecho incluye git-complete.
Para activar el autocompletado, debe agregar un pequeño bloque de código a su ~/.zshrc
. Es posible que deba crear ese archivo en su carpeta de usuario si aún no existe. Nota: La salida de la secuencia de comandos de instalación anterior le dirá exactamente qué código agregar, así que léalo cuidadosamente y cópielo desde allí en caso de que se haya actualizado desde que escribí aquí.
if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi
Importante:
Cuando la instalación haya finalizado, lea la salida del script de instalación.
It no solo le indicará que agregue código a .zshrc, sino que también le dará consejos sobre acciones adicionales que podrían ser necesarias, como forzar la reconstrucción de zcompdump. Pero lo más probable es que no necesite los pasos adicionales.
Comentarios
- La terminal muestra un mensaje molesto cada vez que ‘ s abierto:
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
¡Pero funciona! - Me acabo de unir a esta comunidad para poder ‘ aún no he respondido, pero encontré que » oh-my-zsh » es súper súper útil y realmente me gusta la interfaz de usuario: github.com/ohmyzsh/ohmyzsh Esto, por supuesto, es para personas que usan zsh. Yo ‘ asumo que no ‘ no funciona para bash …
Respuesta
Puedes instalar bash y git desde MacPorts con la opción «bash_completion» habilitada. Probablemente sea la forma más sencilla de mantener actualizados tanto git como las finalizaciones.
http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard
Para instalar MacPorts: http://www.macports.org/install.php/
Información adicional
En cuanto a ubicar la configuración de finalización en su sistema Linux, eche un vistazo en / etc /bash_completion.d/git (es un archivo largo). Sin embargo, copiar eso por sí solo probablemente no funcionará, ya que está diseñado para ser obtenido por el marco de finalización a través de / etc / bash_completion (que se obtiene de /etc/profile.d/bash_completion.sh; archivos en / etc / profile .d provienen de / etc / profile).
Respuesta
Si su finalización de git está parcialmente rota, incluso después de la fuente https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, es posible que solo necesite actualizar su versión de git.
Por ejemplo, cuando escribí git check
+ TAB
, se autocompletaría correctamente git checkout
. Pero cuando escribí git checkout
+ TAB
, no mostraba la lista de ramas, solo HEAD
.
La solución para mí fue actualizar mi git
versión. Estaba en 2.7.0, que aparentemente no era compatible con la última git-completion.bash
. Ejecuté brew upgrade git
, que lo actualizó a 2.13.0, y ahora prop erly autocompleta los nombres de mis ramas.
Comentarios
- Estaba teniendo el mismo problema, pero tuve que ejecutar
brew upgrade git
ybrew link git
(con anulación habilitada) - Gracias por la captura @Tope. He cambiado
update
aupgrade
.
Responder
De lejos, la mejor referencia que he encontrado para resolver este mismo problema está en SpinDance , por Connor Livingston :
Si el git- complete.bash el script no existe en su máquina, recupérelo del enlace que proporcioné anteriormente (que es este ) y guárdelo en su máquina local en un nuevo archivo llamado git-completa.bash en el /usr/local/etc/bash_completion.d/ directorio. Si existe el script git-completa.bash en su máquina, pero no está en el directorio /usr/local/etc/bash_completion.d/ , debemos crear una copia en ese directorio. Un rápido sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash debería hacer el truco. Para aquellos que tienen curiosidad sobre el directorio /usr/local/etc/bash_completion.d/ : es para almacenar nuevos comandos de finalización, y es posible que tenga que crearlo si aún no existe en su máquina.
En este punto, el script git-deployment.bash debería existir en su máquina local en el directorio /usr/local/etc/bash_completion.d/ . Ahora conectaremos el script de finalización de git en bash apuntándolo desde ~ / .bash_profile .
Nota: la tilde en la oración anterior se refiere al directorio de inicio de su computadora. Agregue la siguiente línea a ~ / .bash_profile : source /usr/local/etc/bash_completion.d/git-completion.bash y guarde. El último paso es volver a cargar su perfil de bash. Puede lograr esto ejecutando source ~ / .bash_profile en su sesión de bash actual.
Respuesta
Instale oh-my-zsh y establezca zsh como su shell predeterminado y agradézcame más tarde 🙂
Comentarios
- Lo he hecho, precisamente con la esperanza de no tener para lidiar con eso, todavía no hay sugerencias de rama después de presionar la pestaña
- En realidad, no necesita oh-my-zsh , ¡ni siquiera ningún sistema de complementos por separado! La finalización de Git viene de la caja, solo tiene que habilitarla.
Responder
Lo intenté y funciona bien para las ramas, pero cuando lo hace git st
+ tab
, muestra el error como este
opción desconocida: –list-cmds = list-mainporcelain, otros, nohelpers, alias, list-complete, uso de configuración: git [–version] [–help] [-C] [-c =] [–exec-ruta [=]] [–html-ruta] [–man-ruta] [–info-ruta] [-p | –paginate | –no-pager] [–no-replace-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []
Busqué en Internet y descubrió que --list-cmds
en .git-completion.bash
estaba en la última versión de git y en mi mac la versión de git era 2.17.2
Aquí están las soluciones
Solución 1
- Verifique la versión del git usando el comando
git --version
-
Luego ingrese el mismo número de versión en la url que yo hice
curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
-
Luego, siga los mismos pasos que en la respuesta superior, ingrese el código siguiente en
~/.bash_profile
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Solución 2
Debería intentar actualizar la versión de git a la última, entonces debería funcionar.
Respuesta
La mayoría de los usuarios tendrán git
instalado como parte de la línea de comandos de xcode herramientas en /usr/bin/git
y bash completio n reglas para git estarán disponibles en /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.
En este caso, no es necesario instalar git desde Homebrew o las reglas de finalización de git de origen raw.githubusercontent.com. Simplemente cree un enlace simbólico de la siguiente manera:
cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git
Nota: asegúrese de haber «instalado y configurado el paquete bash-completion
desde Homebrew.
Respuesta
Para macOS Catalina +, en zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
Luego, actualice su ~/.zshrc
con:
if [ -f ~/.git-completion.zsh ]; then . ~/.git-completion.zsh fi
Respuesta
Localice su archivo .bashrc
.
Ábralo y agregue este línea en la parte inferior:
source /etc/bash_completion.d/git
Comentarios
- Yo no ‘ no tiene nada en una carpeta
/etc/bash_completion.d/
, en un sistema relativamente nuevo (OSX 10.10.3). - Intente crear eso.
- No bash_completion, git_completion que hace cosas diferentes.
- @MichaelDurrant Funciona. Confía en mí.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
- @crmpicco ¿Podría proporcionar instrucciones para crear
/etc/bash_completion.d/git
? Haría que su respuesta fuera más valiosa.