Git将新的本地分支推送到远程,而无需指定名称

时间:2013-08-07 14:50:51

标签: git

在处理针对特定跟踪问题的修补程序时,我们的工作流程如下:

1. git checkout patch; git pull upstream patch; # make sure we're up-to-date
2. git checkout -b issue-435-db-integrity-exception
3. # code some awesome
4. git commit -am "Fixes issue #435"
5. git push -u origin issue-435-db-integrity-exception

然后我们打开从origin/435upstream/patch的拉取请求,以便代码审核可以在GitHub / Bitbucket上进行。然后我们从第1步开始。

但是,虽然听起来有点吵,如果我们不必明确命名我们想要创建的远程分支,那就太棒了:

git push -u origin issue-435-db-integrity-exception

再次输入该分支名称并不是很有趣,我不同意将其更改为435或更紧凑的内容。

有没有办法(1)强制Git将当前分支推送到类似命名的分支,在必要时创建而不明确命名它?不是全球,只是一种现场的旗帜。

或者,是否可以(2)访问Git别名中的当前分支,并编写如下内容:

[alias]
    pnew = push -u origin $(git symbolic-ref --short HEAD)

(但这不起作用 - 它认为--short选项适用于push

1 个答案:

答案 0 :(得分:7)

您可以使用以下内容:

# For Git 1.8.5+
git push origin -u @

# For older versions of Git
git push origin -u HEAD

通过使用@HEAD,Git会将当前签出的分支推送到origin,如果origin上的分支不存在,则将创造它。

因此,在您的示例中,如果您已issue-435-db-integrity-exception签出,则git push origin @将在origin上创建一个名称相同的新分支。