2015-12-17 8 views
26

Ich versuche, einen Alias ​​mit Parameter für meine einfache Git Add/Commit/Push.ZSH Alias ​​mit Parameter

ich gesehen habe Funktion als Alias ​​verwendet werden könnte, so dass ich versuchen, aber ich habe es nicht machen ..

, bevor ich hatte:

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

Aber ich möchte in der Lage sein, meine zu ändern verpflichtet:

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

(ich weiß, dass es eine schreckliche git Praxis ist)

Antwort

33

Sie können keinen Alias ​​mit Argumenten * erstellen, es muss eine Funktion sein. Ihre Funktion ist in der Nähe, Sie müssen nur bestimmte Argumente anstelle der gesamten Befehle angeben und Leerzeichen innerhalb der [] hinzufügen.

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

*: Die meisten Schalen keine Argumente Aliase erlauben, glaube ich csh und Derivate, aber you shouldn't be using them anyway.

+0

'Csh' tut, aber es hat keine Funktionen überhaupt. (Ich weiß nicht, ob es keine Funktionen gibt, weil Aliase Parameter annehmen können, oder wenn Aliase Parameter annehmen, weil es keine Funktionen gibt oder was.) – chepner

+0

Also würden Sie es (von der Shell) wie '' 'gitall 'meinen Commit Nachricht "' ''? oder würdest du es '' 'gitall nennen (' meine Commit Nachricht ') '' ' – archae0pteryx

+0

@ archae0pteryx Funktionen werden genau wie jeder andere Befehl aufgerufen, also' gitall "meine Commit Nachricht" '. – Kevin

3

"git add ." und die anderen Befehle zwischen " sind nur Zeichenfolgen für bash, entfernen Sie die " s.

Sie könnten stattdessen [ -n "$1" ] in Ihrem if Körper verwenden.

26

Wenn Sie wirklich einen Aliasnamen mit einem Parameter aus irgendeinem Grund verwenden müssen, können Sie es hacken durch eine Funktion in Ihrem Alias ​​Einbetten und sofort ausführen:

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

Ich sehe dieser Ansatz viel verwendet in .gitconfig Aliase.

+1

So hacky und doch so schön – misaka

+2

Warum einen Alias ​​überhaupt machen? Rufen Sie einfach die Funktion 'example' auf. – tripleee

0

habe ich diese Funktion in .zshrc Datei:

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 
} 

Hier git push origin HEAD verantwortlich ist Ihren aktuellen Zweig auf Fernbedienung drücken.

Von Eingabeaufforderung diesen Befehl ausführen: gitall "commit message goes here"

Wenn wir nur gitall ohne laufen Commitnachricht dann die Commit-Nachricht update sein wird, wie die Funktion sagte.