2013-10-22 15 views
25

私は迷惑なビッグネームを持っている機能ブランチ上で動作するので、私はそうのように、私の地元の機能ブランチから機能ブランチまでプッシュする必要があるとき、私は頻繁に私の現在のブランチ名をgrepを終わる:gitエイリアスのパイプ?

git branch | grep '*' | sed 's/* //' | xargs git push origin 

これを正常に動作します。私は、このエイリアスにしたいので、私は〜/ .gitconfigにこれをしなかった:

[alias] 
    pushcur = branch | grep '*' | sed 's/* //' | xargs git push origin 

、私はgit pushcurを実行したときに、私は次のエラーを取得する:

usage: git branch [options] [-r | -a] [--merged | --no-merged] 

ことを信じるように私をリードしますエイリアスがパイプを正しく解析していません。目的のエイリアスを達成するために何か他に何か必要はありますか?

+2

gitの一般的な問題を解決することとは関係ありませんが、合理的に最近のバージョンのgitでは、 'push.default'(または' push.origin.default'を 'origin'に限定する) 「上流」が時にはより適切かもしれないが)。 [git-config](https://www.kernel.org/pub/software/scm/git/docs/git-config.html)のpush.defaultセクションを参照してください。 – torek

+0

また、bashのオートコンプリートを使用して分岐名をタップすることも検討してください。 ) – caesarsol

答えて

37

私はあなたができるとは思わないが、あなたは、私は通常、小さなgit-スクリプトを作る

[alias] 
    pushcur = ! git branch | grep '*' … 
+0

"ただし、Gitサブコマンドではなく外部コマンドを実行したい場合は、!文字でコマンドを開始してください。 - [git book](https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases) – nietaki

3

新しいシェルコマンドとしてコマンドを処理するために!でそれを接頭辞としていたディレクトリにそれらを置くことができます私の道(~/.local/bin)。たくさんの良い例についてはgit-extrasをご覧ください。

関連する問題