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

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

git push origin feature/123-sandbox-tests

这很乏味。我在找捷径,就像

git push origin current # <- example, not working

git知道当前是feature/123-sandbox-tests。


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

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


当前回答

不管怎样,终极捷径是:

在我的.bash_profile中,我有别名push="git push origin HEAD",所以每当我输入push时,我知道我正在推到我所在的当前分支。

其他回答

在ceztko的回答的帮助下,我写了这个小的帮助函数,让我的生活更简单:

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
}

它将当前分支推到原点,如果还没有设置远程跟踪分支,也会设置它。

你应该看看“git push”的默认行为中没有指定分支的类似问题

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

Git配置——global push.default current

其他选项:

不要推任何东西 matching:推送所有匹配的分支 upstream/tracking:将当前分支推到它正在跟踪的位置 current:推当前支路

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

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

在命令$gpb上,它获取当前分支名称并将其推到原点。

以下是我的其他别名:

alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'

不管怎样,终极捷径是:

在我的.bash_profile中,我有别名push="git push origin HEAD",所以每当我输入push时,我知道我正在推到我所在的当前分支。

如果你使用的是git 1.7。X时,可以执行如下命令设置远程跟踪分支。

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

然后你可以简单地使用git push来推送所有的更改。要获得更完整的答案,请在这里查看类似问题的公认答案。

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

git config --global push.default upstream