Git – 推送当前分支的快捷方式

有没有告诉Git推送当前跟踪分支的捷径?
注意:我知道我可以更改默认的推送行为 ,但是我正在寻找一种不改变默认行为的临时解决scheme。

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

 git push origin feature/123-sandbox-tests 

这是乏味的。 我正在寻找一个快捷方式,就像

 git push origin current 

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


编辑 :从版本2.0开始,git的默认行为已经变成了一个更直观的行为,这就是我想要实现的。 看到这个问题的细节。

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

根据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 。 如果你还没有推到原点,也可以使用git push -u origin HEAD设置本地分支的上游跟踪信息。

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

 git config --global push.default current 

那么就这样做

 git push 

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

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

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

git config --global push.default current

其他选项:

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

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

你也可以通过设置branch.<branch name>.merge到远程分支名称(在你的情况下与本地名称相同)和branch.<branch name>.remote到名称您要推送的远程(默认为原点)。 如果你看看你的configuration,那么最有可能已经有一个master设置,所以你可以按照这个例子。

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

有关这些设置的详细信息,请参阅git-config手册页 。

想一想,在重读你的问题时,我想你知道这一切。 我想你实际上找的东西不存在。 如何bash函数像(未经testing):

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

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

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

然后你可以简单地使用git push来推送所有的变化。 有关更完整的答案,请参阅此处接受的类似问题的答案。

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

 git config --global push.default upstream 

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

在我的.bash_profile我有alias push="git push origin HEAD" ,所以无论何时我inputpush我知道我正在推送到当前分支。

我在.bashrcconfiguration中使用这样的别名

 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' 

在ceztko的回答的帮助下,我写了这个小帮手function,让我的生活更轻松:

 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 } 

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