2012-03-03 15 views
22

Tiendo a tener nombres de rama largos para git (por ejemplo, step110_create_search_engine_to_replace_google).¿Hay un atajo para el nombre de la sucursal de git?

¿Cómo debería referirme a él simplemente como paso110 en las declaraciones de verificación/confirmación?

+2

¿Ha activado las reglas/'contrib completos/Git-Git completion.bash' autocompletar? Debería poder escribir 'git checkout step110 ' y hacer que su caparazón complete automáticamente el nombre de la rama. – simont

+0

Hola Simont, parece ser la respuesta que estoy buscando. ¿Podría decirme cómo activar git-completion y moverlo para responder, para poder aceptarlo? Muchas gracias. – AdamNYC

Respuesta

29

Si está en un sistema tipo Unix (Linux, Mac OS X, quizás otros), existe el conjunto de reglas autocompletar bash contrib/complete/git-completion.bash bash, que le permitirá autocompletar comandos git (puede escribir git checkout step110<tab> y su shell autocompletará el nombre-sucursal

Para activar esta:.

  • Si tienes la fuente de Git, en contrib/complete/ hay un archivo git-completion.bash Pon esa caja fuerte en algún lugar (como ~/.git-completion) y, a continuación, añadir. la siguiente línea en su archivo ~/.bashrc: source ~/.git-completion. O bien r Establezca su sesión de shell o ejecute source ~/.git-completion para ejecutarlo en la sesión de shell actual.
  • Si no hace tiene la fuente de git, puede obtener la secuencia de comandos desde here (github.com). Luego sigue las mismas instrucciones que arriba.

Si tienes la suerte de estar usando zsh en lugar de bash, sé que oh-my-zsh tiene plugins para autocompletar GIT (no estoy seguro de cómo activar sin oh-my-zsh).

Fuentes:

+0

'.bashrc' no funcionó,' .bash_profile' funcionó para mí – Jiemurat

1

sólo quiero añadir que este archivo por lo general ya viene con git. No necesita descargarlo de nuevo. Solo necesita ubicarlo y ejecutarlo.

En mi sistema (Centos OS) en los pasos siguientes obras:

$ locate completion.bash 
/usr/share/doc/git-1.7.4.1/contrib/completion/git-completion.bash 
$ source /usr/share/doc/git-1.7.4.1/contrib/completion/git-completion.bash 

Obvioiusly como se ha señalado ya que es mejor añadir esta línea a su archivo .bashrc en su directorio personal, por lo que no lo hace Necesito repetirlo cada vez que abras un nuevo caparazón.

En mi caso yo añadiría el último comando para mi archivo .bashrc

source /usr/share/doc/git-1.7.4.1/contrib/completion/git-completion.bash 
12

Aquí es cómo lo instalé en OS X ...

Comprobar si está en su sistema local en primer lugar. Parece que MacPorts y Homebrew lo descargan por ti.

$ find/-name "git-completion.bash" 

De lo contrario, puede descargarlo ...

$ wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -O ~/.git-completion 

Si usted no tiene wget, puede instalar fácilmente con Homebrew o utilizar cURL.

$ vim ~/.profile 

... o su editor de elección.

A continuación, agregue ...

source ~/.git-completion 

Si su terminación automática no funciona de forma automática ...

$ source ~/.profile 

... y luego tienes Git terminación automática.

+2

No estoy seguro de por qué no sabía nada de esto, pero es muuuuy lindo. Git debería hacer esto de la caja. – jhoff

+0

¡Funciona como un encanto! –

+0

En OSX, si instaló git a través de MacPort, tendrá la secuencia de comandos en esta ubicación: /opt/local//share/doc/git-core/contrib/completion/git-completion.bash – kakyo

1

probar este alias:

cb = "!checkoutbranch() { local branches=`git branch | grep -i $1 | tr -d '* '`; if [[ `echo \"$branches\" | wc -l | tr -d ' '` != 1 ]]; then echo \"Matched multiple branches:\"; git branch | grep --color -i $1; exit 1; fi; git checkout $branches; }; checkoutbranch" 

Pedido develop la rama:

git cb dev 
+0

Muy, muy bueno. ¡Y funciona como un encanto! Solo páselo por cualquier subcadena con el nombre de la rama, y ​​será elegido por ti. Gran idea. Eso es lo que estaba buscando: la finalización de pestañas es demasiado lenta y torpe para mí. – Koshmaar

+0

@Koshmaar una mejor versión https://gist.github.com/iwill/88f5835bfc4e58aa1a88 – iwill

+0

Bien, lo intentaré en unas pocas horas cuando esté en el trabajo. Hasta ahora, usando este alias tengo dos comentarios: 1. Quería sustituirlo por git checkout (con alias g co típico), desafortunadamente no admite commits y archivos. Ya sabes, git permite hacer git co y git co . 2. En general, creo que tener esta funcionalidad en más lugares donde puede pasar el nombre de la rama sería increíble. – Koshmaar

0

git symbolic-ref puede ayudar si usted es demasiado perezoso para presionar un TAB como yo.

$ git symbolic-ref refs/heads/s1 refs/heads/step110_create_search_engine_to_replace_google 
$ git reset --hard s1 
$ git checkout -b s1-experiment s1 

Puede asignar un alias a una rama distancia para saltar a escribir remote/TAB. (Prefijo con refs/tags/ para evitar problemas)

$ git symbolic-ref refs/tags/base refs/remotes/github/a-branch-to-which-you-dont-want-to-push 
$ git rebase -i base 
Cuestiones relacionadas