2012-03-03 15 views
22

Tendo ad avere nomi di filiali lunghi per git (ad es. Step110_create_search_engine_to_replace_google).Esiste una scorciatoia per il nome del ramo git?

Come devo fare riferimento ad esso semplicemente come passo110 nelle istruzioni di pagamento/commit?

+2

Avete attivato le regole complete/git completamento automatico 'contrib/GIT-completion.bash'? Dovresti essere in grado di digitare 'git checkout step110 ' e fare in modo che la shell completi automaticamente il nome del ramo. – simont

+0

Ciao Simont, sembra essere la risposta che sto cercando. Potresti dirmi come attivare il completamento di git e spostarlo per rispondere, in modo che io possa accettarlo? Molte grazie. – AdamNYC

risposta

29

Se sei su un sistema Unix (Linux, Mac OS X, forse altri), c'è il set di regole di completamento automatico contrib/complete/git-completion.bash bash, che ti consente di completare automaticamente i comandi git (puoi digitare git checkout step110<tab> e il tuo shell completamento automatico del ramo-nome

Per attivare questo:.

  • Se hai la fonte git, in contrib/complete/ c'è un file git-completion.bash Put che al sicuro da qualche parte (come ~/.git-completion), e quindi aggiungere. la seguente riga per il tuo file ~/.bashrc: source ~/.git-completion. estart tua sessione shell o esegui source ~/.git-completion per farlo funzionare nella sessione shell corrente.
  • Se si non ha ha il sorgente git, è possibile ottenere lo script da here (github.com). Quindi seguire le stesse istruzioni di cui sopra.

Se siete fortunati abbastanza per essere utilizzando zsh invece di bash, so che oh-my-zsh ha git plugin completamento automatico (non sono sicuro di come attivare loro senza oh-my-zsh).

Fonti:

+0

'.bashrc' non ha funzionato,' .bash_profile' ha funzionato per me – Jiemurat

1

voglio solo aggiungere che questo file viene di solito già con git. Non è necessario scaricarlo di nuovo. Hai solo bisogno di individuarlo ed eseguirlo.

Sul mio sistema (CentOS OS) le seguenti operazioni funziona:

$ 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 come sottolineato già è meglio aggiungere questa riga al vostro file .bashrc nella vostra home directory, in modo che non si è necessario ripeterlo ogni volta che apri una nuova shell.

Nel mio caso vorrei aggiungere l'ultimo comando per il mio file .bashrc

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

Ecco come l'ho installato su OS X ...

Verificare se è sul sistema locale prima. Sembra che MacPorts e Homebrew lo scarichino per te.

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

In caso contrario, scaricarlo ...

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

Se non si dispone di wget, è possibile installarlo facilmente con Homebrew o utilizzare cURL.

$ vim ~/.profile 

... o il vostro editore di scelta.

Quindi aggiungere ...

source ~/.git-completion 

Se il completamento automatico non funziona automaticamente ...

$ source ~/.profile 

... e poi devi Git completamento automatico.

+2

Non sono sicuro del motivo per cui non lo sapevo, ma è davvero bello. Git dovrebbe farlo fuori dagli schemi. – jhoff

+0

Funziona come un fascino! –

+0

Su OSX, se hai installato git tramite MacPort, avrai lo script in questa posizione: /opt/local//share/doc/git-core/contrib/completion/git-completion.bash – kakyo

1

Prova questo 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" 

Checkout ramo develop:

git cb dev 
+0

Molto, molto bello. E funziona come un fascino! Passa semplicemente qualsiasi sottostringa nel nome del ramo e sarà scelto per te. Grande idea. Questo è quello che stavo cercando - il completamento delle schede è troppo lento e goffo per me. – Koshmaar

+0

@Koshmaar una versione migliore https://gist.github.com/iwill/88f5835bfc4e58aa1a88 – iwill

+0

Ok, lo proverò tra poche ore al lavoro. Finora usando questo alias ho due commenti: 1. Volevo sostituire git checkout per questo (con alias tipico g co), purtroppo non supporta commit e file. Sai, git ti permette di fare git co e git co . 2. Nel complesso, penso che avere questa funzionalità in più posti in cui è possibile passare il branchname sarebbe fantastico. – Koshmaar

0

git symbolic-ref può aiutarvi se siete troppo pigri per premere un TAB come me.

$ 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 

È possibile trasformare un ramo remoto per saltare digitando remote/TAB. (Prefisso con refs/tags/ per evitare problemi)

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