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

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

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

git push origin feature/123-sandbox-tests

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

git push origin current # <- example, not working

git知道current是feature/123-sandbox-tests


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

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

193036 次浏览

如果你使用的是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

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

你也可以在自己的配置中这样做,将branch.<branch name>.merge设置为远程分支名称(在你的情况下与本地名称相同),并可选地将branch.<branch name>.remote设置为你想要推送的远程名称(默认为origin)。如果你查看你的配置,master很可能已经有一个这样的set,所以你可以遵循这个例子。

最后,确保你考虑了push.default设置。它默认为“匹配”,这可能会产生不希望看到的和意想不到的结果。我认识的大多数人认为“上游”更直观,它只推动当前的分支。

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

我重读了你的问题,我想你知道这一切。我觉得你真正要找的东西并不存在。这样一个bash函数怎么样(未经测试):

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

根据git push文档:

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

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

不管怎样,终极捷径是:

在我的.bash_profile中,我有alias 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 config --global push.default current

其他选项:

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

你可以使用下面的命令配置git来推送到当前的分支

git config --global push.default current

那就去做

git push

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

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