2015-12-17 4 views
26

私の単純なgit add/commit/pushのパラメータでエイリアスを作成しようとしています。私は私がしようとして機能を別名として使用することができますが、私はそれをしなかった見てきたパラメータ付きのZSHエイリアス

..

私が持っていた前:

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

しかし、私は変更することができるようにしたい私コミット:

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

(私はそれは恐ろしいgitの練習を知っている)

答えて

33

引数*でエイリアスを作成することはできません。それは関数でなければなりません。あなたの関数は近いですが、コマンド全体ではなく特定の引数を引用するだけで、[]の中にスペースを入れるだけです。

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

*:ほとんどのシェルは別名で引数を許可していない、私は信じていCSHおよび誘導体は行うが、you shouldn't be using them anyway

+0

'csh'は行いますが、関数はまったくありません。 (エイリアスがパラメータを取ることができるため、またはエイリアスが関数や何もないのでパラメータを取るので、関数がないかどうかは分かりません) – chepner

+0

'' 'gitall"のようにコミットメッセージ "' ''? '' gitall( '私のコミットメッセージ') '' ' – archae0pteryx

+0

@ archae0pteryx関数は他のコマンドと全く同じように呼び出されるので、' gitall "私のコミットメッセージ" '。 – Kevin

3

"git add .""の間の他のコマンドは、bashの文字列にすぎません。"を削除してください。

if本体で[ -n "$1" ]を代わりに使用すると便利です。

26

あなたが実際にいくつかの理由でパラメータを指定してエイリアスを使用する必要がある場合、あなたはあなたのエイリアスに機能を埋め込み、すぐにそれを実行することにより、それをハックすることができます

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

私はこのアプローチが多く使用さ見ます.gitconfigエイリアスで。

+1

だからまだハッキーであり、とても美しい – misaka

+2

なぜ別名を作るのですか?関数 'example'を呼び出すだけです。 – tripleee

0

私は.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 
} 

ここgit push origin HEADは、リモートであなたの現在のブランチをプッシュする責任があります。

コマンドプロンプトから次のコマンドを実行します。gitall "commit message goes here"

私たちはどんなことなく、gitallを実行した場合は、メッセージをコミット機能が言ったように、その後コミットメッセージはupdateになります。

関連する問題