2015-12-17 42 views
26

Próbuję utworzyć alias z parametrem dla mojego prostego git add/commit/push.Alias ​​ZSH z parametrem

Widziałem Funkcja może być używana jako alias więc staram ale mi się nie udało ..

zanim miałem:

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

ale chcę, aby być w stanie zmienić mojego zobowiązuje:

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

(wiem, że to straszna praktyka git)

Odpowiedz

33

Nie można utworzyć aliasu z argumentami *, musi to być funkcja. Twoja funkcja jest bliska, wystarczy podać określone argumenty zamiast wszystkich poleceń i dodać spacje wewnątrz [].

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

*: Większość muszle nie pozwalają argumenty aliasów, wierzę csh i pochodne zrobić, ale you shouldn't be using them anyway.

+0

'csh' ma, ale nie ma żadnych funkcji. (Nie wiem, czy nie ma żadnych funkcji, ponieważ aliasy mogą przyjmować parametry lub aliasy przyjmują parametry, ponieważ nie ma żadnych funkcji, lub co.) – chepner

+0

Więc nazwałbyś to (z powłoki) jak '' 'gitall" my zatwierdzić wiadomość "' ''? czy nazwałbyś to '' gitall ('mój commit commit') '' ' – archae0pteryx

+0

@ archae0pteryx funkcje są nazywane dokładnie tak, jak każde inne polecenie, więc' gitall "mój komunikat zatwierdzenia" '. – Kevin

3

"git add ." i pozostałe polecenia między " są tylko ciągami dla bash, usuń " s.

Zamiast tego możesz użyć [ -n "$1" ] w swoim ciele.

26

Jeśli naprawdę trzeba użyć aliasu z parametrem z jakiegoś powodu, można siekać go osadzając funkcję w swojej alias i natychmiast je wykonuje:

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

widzę to podejście stosowane dużo w aliasach .gitconfig.

+1

Tak hakowaty, a jednocześnie tak piękny – misaka

+2

Po co tworzyć pseudonim? Po prostu wywołaj funkcję 'przyklad'. – tripleee

0

użyłem tej funkcji w pliku .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 
} 

Tutaj git push origin HEAD jest odpowiedzialny pchnąć swoją aktualną gałąź na pilocie.

Z wiersza poleceń uruchom polecenie: gitall "commit message goes here"

Jeśli wystarczy uruchomić gitall bez popełnić jakikolwiek komunikat następnie komunikat popełnić będzie update jako funkcja powiedział.