35

我想改进我当前的别名,他们中的大多数都在一个分支上工作。有没有办法在 git 别名中引用当前分支,所以我不需要每次都传递它?

像这个:

git config alias.po "push origin"

是这样使用它:

git po foo_branch

我只想运行git po它以将当前分支作为参数。

4

4 回答 4

75
[alias]
  po = "!git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\""
于 2013-09-13T09:06:19.187 回答
9

git symbolic-ref --short HEAD打印当前分支,因此您可以定义一个简单的 shell 别名:

alias gpo='git push origin "$(git symbolic-ref --short HEAD)"'
于 2013-02-27T12:44:44.997 回答
5

此答案将从 Git 2.0 开始有效,默认推送行为将是simple

除非push.default设置设置为matching,否则git push不指定参数将始终推送当前分支,因此在这种情况下您不需要指定它。

于 2013-02-27T12:40:59.527 回答
0

您的问题不是 100% 清楚您需要这两个别名中的哪一个。

这将推送当前签出的分支:

git config alias.po !f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push origin $tmp_branch; unset $tmp_branch; }; f

这将推送给定的分支名称 ( git po branchName):

git config alias.po !f() { git push origin $1; }; f
于 2013-02-27T12:42:25.110 回答