Git - 推送当前分支快捷方式

时间:2012-12-25 15:38:39

标签: git

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

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

git push origin feature/123-sandbox-tests

这很乏味。我正在寻找一个捷径,比如

git push origin current

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


编辑:从版本2.0开始,git的默认行为已更改为更直观的行为,这是我想要实现的。有关详细信息,请参阅This SO question

编辑2 ceztko's answer是最佳答案,因为它允许推送当前分支,无论设置如何。

8 个答案:

答案 0 :(得分:538)

根据git push文件:

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

所以我认为你需要的是git push origin HEAD。如果您尚未推送到原点,那么在本地分支中设置上游跟踪信息也很有用{/ p}。

答案 1 :(得分:138)

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

git config --global push.default current

然后就这样做

git push 

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

答案 2 :(得分:23)

您应该在Default behavior of "git push" without a branch specified

中查看类似的问题

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

git config --global push.default current

其他选择:

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

答案 3 :(得分:6)

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

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

然后,您只需使用git push即可推送所有更改。如需更完整的答案,请参阅accepted answer to a similar question here.

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

git config --global push.default upstream

答案 4 :(得分:5)

最简单的方法:运行git push -u origin feature/123-sandbox-tests一次。这会按照您习惯的方式推送分支,并在本地配置中设置上游跟踪信息。之后,您可以git push将跟踪的分支推送到其上游远程。

您也可以通过将branch.<branch name>.merge设置为远程分支名称(在您的情况下与本地名称相同)并且可选地将branch.<branch name>.remote设置为远程名称来自行配置想要推送(默认为原点)。如果你查看你的配置,很可能已经为master设置了其中一个,所以你可以按照这个例子。

最后,请务必考虑push.default设置。它默认为“匹配”,这可能会产生意外和意外的结果。我认识的大多数人发现“上游”更直观,只推动当前分支。

有关这些设置的详细信息,请参阅git-config man page

第二个想法,重新阅读你的问题,我想你知道这一切。我认为你真正想要的东西不存在。 bash函数怎么样(未经测试):

function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}

答案 5 :(得分:4)

为了它的价值,最终的捷径:

.bash_profile alias push="git push origin HEAD"我有push,所以每当我输入{{1}}时,我都知道我正在推进我正在使用的当前分支。

答案 6 :(得分:4)

我在.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'

答案 7 :(得分:0)

在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
}

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