管道在git别名?

Lee*_*ton 40 unix git bash

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

git branch | grep '*' | sed 's/* //' | xargs git push origin
Run Code Online (Sandbox Code Playgroud)

这很好用.我想把它变成别名,所以我在〜/ .gitconfig中做了这个:

[alias]
   pushcur = branch | grep '*' | sed 's/* //' | xargs git push origin
Run Code Online (Sandbox Code Playgroud)

现在,当我运行时git pushcur,我收到以下错误:

usage: git branch [options] [-r | -a] [--merged | --no-merged]
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ker 66

我认为你不能这样做,但是你可以在它!前面添加一个把命令视为新的shell命令

[alias]
    pushcur = ! git branch | grep '*' …
Run Code Online (Sandbox Code Playgroud)

  • “但是,也许您想运行外部命令,而不是 Git 子命令。在这种情况下,您可以使用 ! 字符开始命令。” - [git book](https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases) (2认同)
  • @GabrielStaples,通常参数会附加到命令中,但如果你想把它们放在其他地方,诀窍是创建 bash 函数,如 `par321 = "!par321() { echo $3 $2 $1 ; } ; par321"` 然后 `git par321 1 2 3` 将输出 `3 2 1`。 (2认同)

for*_*all 5

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