关于Git:Git – 推送当前分支快捷方式


Git - push current branch shortcut

是否有快捷方式告诉Git将当前跟踪分支推到原点?
注意:我知道我可以更改默认的推送行为,但我正在寻找不更改默认行为的特别解决方案。

例如,假设我在feature/123-sandbox-tests分支上,我将使用

1
git push origin feature/123-sandbox-tests

这很乏味。我在找一条捷径,比如

1
git push origin current

其中git知道电流是feature/123-sandbox-tests

编辑:从2.0版开始,Git的默认行为已经变为更直观的行为,这是我想要实现的。详见本问题。

编辑2:Ceztko的答案是最好的答案,因为它允许推动当前分支,而不管设置如何。


根据git push文件:

1
2
git push origin HEAD
    A handy way to push the current branch to the same name on the remote.

所以我认为你需要的是git push origin HEAD。如果您还没有推到原点,那么在本地分支机构中设置上游跟踪信息也很有用。


您可以使用以下命令将git配置为推送到当前分支

1
git config --global push.default current

那就这么做吧

1
git push

这将把代码推送到当前的分支。


在没有指定分支的情况下,"git push"的默认行为中,您应该看看类似的问题。

基本上,它解释了如何设置默认行为来推动当前执行git push的分支。可能你需要的是:

埃多克斯1〔14〕

其他选项:

  • 没什么:不要推任何东西
  • 匹配:推送所有匹配的分支
  • 上游/跟踪:将当前分支推到正在跟踪的任何分支
  • 当前:推当前分支


如果您使用的是git 1.7.x,那么可以运行以下命令来设置远程跟踪分支。

1
git branch --set-upstream feature/123-sandbox-tests origin/feature/123-sandbox-tests

然后您可以简单地使用git push来推动所有的更改。如需更完整的答案,请参阅此处类似问题的公认答案。

如果只想使用push命令推送当前分支,那么可以将push行为更改为upstream:

1
git config --global push.default upstream


我在.bashrc配置中使用了这样的别名

1
alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'

在命令$gpb中,它使用当前分支名称并将其推送到源站。

以下是我的其他别名:

1
2
3
4
alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'


就其价值而言,终极捷径:

在我的.bash_profile里,我有alias push="git push origin HEAD",所以每当我输入push时,我就知道我正在向当前的分支推进。


最简单的方法是:运行一次git push -u origin feature/123-sandbox-tests。这会像以前那样推动分支,并在本地配置中设置上游跟踪信息。之后,您只需git push就可以将跟踪的分支推送到它们的上游远程位置。

您也可以在配置中通过将branch..merge设置为远程分支名称(在您的情况下与本地名称相同)和可选地将branch..remote设置为要推送到的远程名称(默认为源站)来自己执行此操作。如果您查看配置,很可能已经有了一个针对master的设置,所以您可以使用该示例。

最后,确保考虑push.default设置。它默认为"匹配",这可能会产生不需要的和意外的结果。我认识的大多数人觉得"上游"更直观,它只推动当前的分支。

这些设置的详细信息可以在Git配置手册页中找到。

再想一想,再读一遍你的问题,我想你知道这一切。我觉得你真正想要的东西不存在。bash的功能如何,比如(未测试的):

1
2
3
4
5
function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}

在Ceztko的回答的帮助下,我编写了这个小助手函数,使我的生活更轻松:

1
2
3
4
5
6
7
8
function gpu()
{
    if git rev-parse --abbrev-ref --symbolic-full-name @{u} > /dev/null 2>&1; then
        git push origin HEAD
    else
        git push -u origin HEAD
    fi
}

它将当前分支推送到原点,如果尚未设置远程跟踪分支,也会设置远程跟踪分支。