376 votos

¿Autocompletar para git * sucursales * en la línea de comandos?

En mi máquina linux tengo autocompletar para ramas en git.

[Nota de que estamos hablando acerca de git branch finalización, no bash finalización (por ejemplo, comandos, archivos, etc). Por lo tanto NO lane respuesta]

Por ejemplo, me puede escribir git checkout [TAB] y obtener una lista de las ramas.

O me pueden escribir git checkout feb* [TAB] para obtener todas las ramas que empiezan con "feb".

¿Cómo puedo conseguir esta funcionalidad en una Mac?

He intentado descargar y ejecutar bash-completion/bash_completion y bash-completion/bash_completion.sh.in , pero no alegría. El primero dio mensajes de error acerca de la declare: -A invalid_option. El segundo dio ningún error. Cuando me git checkout [TAB] a pesar de que todavía estoy recibiendo una lista de archivos en el directorio, no las ramas. Estoy en la root del proyecto.

Auto-completar para los directorios y comandos en bash están trabajando ok, así que es específico para git.

514voto

scrot Puntos 692

ok, así que necesitaba el git autocompletado de código de secuencia de comandos.

Tengo desde esta url:

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

No hay necesidad de preocuparse acerca de qué directorio te encuentras en el momento de ejecutar esto como su directorio de inicio(~) se utiliza con el objetivo.

Luego he añadido a mi ~/.bash_profile de archivo de la siguiente 'ejecutar si existe código:

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

Actualización: estoy haciendo estos trozos de código más claro y conciso para reducir la velocidad de mi .bashrc archivo, en este caso, yo ahora uso:

test -f ~/.git-completion.bash && . $_

Nota: $_ significa que el último argumento para el comando anterior. por lo . $_ significa que ejecuta, lo que "es" ser .git-completion.bash en este caso

Esto todavía funciona en Ubuntu y OSX y en las máquinas sin la secuencia de comandos .git-completion.bash script.

Ahora git Ficha (en realidad git FichaFicha ) funciona como un encanto!

(Pd: Si esto no funciona a la primera, puede que tenga que ejecutar chmod -X ~/.git-completion.bash para dar el permiso de escritura a ejecutar).

97voto

Lane Puntos 334

Algunas personas prefieren usar un gestor de paquetes para automatizar la instalación, actualización y configuración de MAC OS paquetes. Yo soy un fan de los gestores de paquetes, y creo Homebrew es el mejor gestor de paquetes para MAC OS X (algunos dicen que es de facto en el OS-X package manager).

Una vez que haya instalado el homebrew, usted puede simplemente instalar git junto con bash-completion con brew install git bash-completion.

A continuación, tendrás que poner lo siguiente en su ~/.bash_profile:

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

(Nota: Si la instalación falla con un error 404, y ya tienes git instalado, sólo hay que quitar la git parte de este brebaje instalar)

más información sobre la instalación de git y bash-completion con cerveza aquí: https://github.com/bobthecow/git-flow-completion/wiki/Install-Bash-git-completion

8voto

Brandon Puntos 1

He aquí lo que está confundiendo a algunos de ustedes que han cerveza o puertos instalado, pero usted está utilizando un sistema de git en /usr/bin/. Para comprobar esto:

which git

Si usted ve /usr/bin/git luego de cerveza no está configurado correctamente, o no has instalado git a través de la cerveza.

Si instala git a través de la cerveza, a continuación, habilitar bash terminaciones para brew también permitirá bash terminaciones para git. Esto es debido a que /usr/local/etc/bash_completion en realidad las fuentes de todo lo en /usr/local/bash_completion.d, y la cerveza paquete instala git git de finalización de la secuencia de comandos de allí.

4voto

Ian Puntos 21

Usted podría instalar git bash y de MacPorts con el "bash_completion" opción habilitada. Es probablemente la forma más fácil de mantener git y las terminaciones hasta la fecha.

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

Como para la localización de la finalización de la configuración de su sistema Linux, echad un vistazo a /etc/bash_completion.d/git (es un archivo largos). La copia que por sí mismo probablemente no funcionará, sin embargo, ya que está diseñado para ser leído por la finalización marco a través de /etc/bash_completion (los cuales se obtienen de /etc/profile.d/bash_completion.sh; los archivos en /etc/profile.d se obtienen de /etc/profile).

-2voto

Josh Puntos 36

Busque su .bashrc archivo.

Abrir y añadir esta línea en la parte inferior:

source /etc/bash_completion.d/git

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X