2013-10-22 40 views
25

我上有惱人的大牌特性分支工作,所以我最後往往grepping我當前分支的名字,當我需要從我的本地特性分支推到特性分支,像這樣: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中,您可以配置'push.default'(或'push.origin.default'以限制對'origin'的影響)到'current'(儘管「上游」有時可能更合適)。請參閱[git-config](https://www.kernel.org/pub/software/scm/git/docs/git-config.html)中的push.default部分。 – torek

+0

也考慮使用bash自動完成來標籤分支名稱! zsh with oh-my-zsh默認爲它;) – caesarsol

回答

37

我不認爲你可以,但你可以用!前綴它來治療的命令作爲新的shell命令

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

「但是,也許你想運行一個外部命令,而不是Git子命令,在這種情況下,你需要使用!字符來啓動命令。」 - [git book](https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases) – nietaki

3

我通常做小git-腳本,並把它們放到一個目錄是在我的路徑(~/.local/bin)。查看git-extras瞭解一些很好的例子。