2015-12-17 22 views
26

Sto provando a creare un alias con parametro per il mio semplice git add/commit/push.Alias ​​ZSH con il parametro

Ho visto la funzione potrebbe essere utilizzata come alias così provo ma non ce l'ha fatta ..

prima avevo:

alias gitall="git add . ; git commit -m 'update' ; git push" 

ma voglio essere in grado di modificare la mia impegna:

function gitall() { 
    "git add ." 
    if [$1 != ""] 
     "git commit -m $1" 
    else 
     "git commit -m 'update'" 
    fi 
    "git push" 
} 

(lo so che è un terribile pratica git)

risposta

33

Non è possibile creare un alias con argomenti *, deve essere una funzione. La tua funzione è vicina, devi solo citare determinati argomenti al posto dell'intero comando e aggiungere spazi all'interno dello [].

function gitall() { 
    git add . 
    if [ "$1" != "" ] # or better, if [ -n "$1" ] 
    then 
     git commit -m "$1" 
    else 
     git commit -m update 
    fi 
    git push 
} 

*: La maggior parte dei gusci non consentono argomenti alias, credo csh e derivati ​​fanno, ma you shouldn't be using them anyway.

+0

'csh' sì, ma non ha funzioni. (Non so se non ci sono funzioni perché gli alias possono prendere parametri, o se gli alias prendono parametri perché non ci sono funzioni, o cosa.) – chepner

+0

Quindi lo chiameresti (dalla shell) come "gitall" mio messaggio di commit "' ''? o lo chiameresti '' 'gitall ('mio messaggio di commit')' '' – archae0pteryx

+0

@ le funzioni di archae0pteryx sono chiamate esattamente come qualsiasi altro comando, quindi 'gitall 'il mio messaggio di commit" '. – Kevin

3

"git add ." e gli altri comandi tra " sono solo stringhe per bash, rimuovere lo " s.

Potrebbe essere necessario utilizzare [ -n "$1" ] nel proprio corpo.

26

Se davvero bisogno di usare un alias con un parametro per qualche motivo, si può incidere, grazie all'integrazione di una funzione nel vostro alias e subito eseguendolo:

alias example='f() { echo Your arg was $1. };f' 

vedo questo approccio usato molto in alias .gitconfig.

+1

Così hacky eppure così bello – misaka

+2

Perché fare un alias? Basta chiamare la funzione 'example'. – tripleee

0

Ho usato questa funzione nel file di .zshrc:

function gitall() { 
    git add . 
    if [ "$1" != "" ] 
    then 
     git commit -m "$1" 
    else 
     git commit -m update # default commit message is `update` 
    fi 
    git push origin HEAD 
} 

Qui git push origin HEAD è responsabile per spingere il ramo corrente sul telecomando.

Dal prompt dei comandi eseguire questo comando: gitall "commit message goes here"

Se solo corriamo gitall senza alcun messaggio di commit allora il messaggio di commit sarà update come ha detto la funzione.