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

Cra*_*tis 4 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
Run Code Online (Sandbox Code Playgroud)

然后,我们从打开拉入请求origin/435upstream/patch,从而使代码审查可以采取在GitHub上/到位桶的地方.然后我们从第1步开始.

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

git push -u origin issue-435-db-integrity-exception
Run Code Online (Sandbox Code Playgroud)

重新输入分支名称并不是很有趣,我不同意将其更改为just 435或更紧凑的东西.

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

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

[alias]
    pnew = push -u origin $(git symbolic-ref --short HEAD)
Run Code Online (Sandbox Code Playgroud)

(但这不起作用 - 它认为该--short选项意味着push)

小智 9

您可以使用以下内容:

# For Git 1.8.5+
git push origin -u @

# For older versions of Git
git push origin -u HEAD
Run Code Online (Sandbox Code Playgroud)

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

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

  • @CraigOtis你甚至可以把它变成一个别名如果你想要的东西,比如`git config --global alias.magic"push origin -u head"`,那么用法就是`git magic`! (2认同)
  • 使用`@`对我不起作用,但是`head`有效。也许有些改变 (2认同)