2013-02-27 34 views
15

Vorrei migliorare i miei alias correnti, la maggior parte di essi funziona su un ramo. C'è un modo per fare riferimento al ramo corrente in un alias git quindi non ho bisogno di passarlo ogni volta?Alias ​​Git sul ramo corrente

come questo:

git config alias.po "push origin" 

è usare in quel modo:

git po foo_branch 

mi piacerebbe correre solo git po e di prendere il ramo corrente come parametro.

+2

git rev-parse --abbrev-ref HEAD è ciò che vorrei utilizzare per derrive il ramo corrente. – Learath2

risposta

0

Questa risposta sarà valida a partire dal Git 2.0, in cui il comportamento spinta di default sarà simple

A meno push.default impostazione è impostata su matching, git push senza specificare l'argomento sarà sempre spingere il ramo corrente, quindi in questo caso non è necessario specificarlo.

+2

-1: Non penso che sia corretto. L'azione predefinita di 'git push' dipende dall'impostazione' push.default' in '.gitconfig'. – lunaryorn

+0

Sì, ma è solo il caso se è impostato su 'matching' – CharlesB

+0

In realtà' matching' è il valore predefinito corrente per 'push.default', quindi ho cambiato la mia risposta – CharlesB

0

Non è al 100% chiaro dalla tua domanda quale di questi due alias richiedi.

Questo spingerà il ramo attualmente verificato:

git config alias.po !f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push origin $tmp_branch; unset $tmp_branch; }; f 

Questo spingerà un dato nome ramo (git po branchName):

git config alias.po !f() { git push origin $1; }; f 
+1

Usa' git symbolic-ref HEAD' per ottenere il ramo attuale. Dovrebbe essere più veloce. – lunaryorn

+0

@lunaryorn perché non 'git rev-parse --abbrev-ref HEAD'? restituisce il nome del ramo senza ref – vladkras

2

non so alcun modo integrato, ma si può fare con un alias shell:

alias gpo='git push origin "$(git-current-branch 2> /dev/null)"' 

Dove git-current-branch è definita come f ollows:

git-current-branch() { 
    if ! git rev-parse 2> /dev/null 
    then 
     print "$0: not a repository: $PWD" >&2 
     return 1 
    fi 
    local ref="$(git symbolic-ref HEAD 2> /dev/null)" 
    if [[ -n "$ref" ]] 
    then 
     print "${ref#refs/heads/}" 
     return 0 
    else 
     return 1 
    fi 
} 

spudoratamente presi da Prezto.

34
[alias] 
    po = "!git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\"" 
+0

Ottima risposta! L'unica avvertenza è che l'ho fatto direttamente dalla riga di comando e ho codificato il mio attuale ramo nella riga di comando :) Direclty l'ha fatto nel file di configurazione e ha funzionato bene. – CubanX

+1

Perché il botto in '! Git'? So cosa botto - qualsiasi cosa faccia in bash, non so esattamente perché lo vorresti qui. –

+3

Il botto consente di eseguire tutto ciò che viene dopo di esso nella shell, cioè che consente di eseguire qualsiasi comando e non solo comandi git nell'alias. –

Problemi correlati