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 en master.
  • 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 Apple git) brew install git y reinicie el terminal para aquellos que enfrentan errores extraños como git 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 agregar bash-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 comando source ~/.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 script if 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én source ~/.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 y brew link git (con anulación habilitada)
  • Gracias por la captura @Tope. He cambiado update a upgrade.

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

  1. Verifique la versión del git usando el comando git --version
  2. 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 
  3. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *