管道在git别名?

时间:2013-10-22 18:18:20

标签: git bash unix

我在功能分支上工作,这些功能分支有很烦人的名字,所以当我需要从我的本地功能分支推送到功能分支时,我常常会抓住当前的分支名称,如下所示:

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]

让我相信别名没有正确解析管道。我还有别的办法来实现所需的别名吗?

3 个答案:

答案 0 :(得分:60)

我认为你不能,但你可以在它前面添加一个!来将命令视为一个新的shell命令

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

答案 1 :(得分:4)

我通常制作小git-个脚本并将它们放在我的路径(~/.local/bin)中的目录中。查看git-extras了解一堆很好的例子。

答案 2 :(得分:0)

一个简单的解决方法是将其添加为 shell别名

这里是一个例子:
alias grf="git rebase -i $(git merge-base --fork-point master)"
(以当前分支的fork提交为基础,并与master进行交互)

对于bash,请将其添加到〜/ .bashrc中,然后只需使用grf