6

在针对特定的跟踪问题进行补丁修复时,我们的工作流程如下所示:

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/435然后我们从to打开一个拉取请求upstream/patch,以便可以在 GitHub/Bitbucket 上进行代码审查。然后我们从第 1 步重新开始。

但是,虽然这听起来有点啰嗦,但如果我们不必显式命名我们要创建的远程分支,那就太好了:

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

重新输入那个分支名称并不是很有趣,而且我不同意将其更改为 just435或更紧凑的名称。

有没有办法(1)强制 Git 将当前分支推送到一个类似命名的分支,如果有必要创建它而不显式命名它?不是全球性的,只是一种现场标志。

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

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

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

4

1 回答 1

10

您可以使用以下内容:

# For Git 1.8.5+
git push origin -u @

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

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

因此,在您的示例中,如果您已issue-435-db-integrity-exception签出,则将git push origin @origin.

于 2013-08-07T15:00:16.990 回答