在处理针对特定跟踪问题的修补程序时,我们的工作流程如下:
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
到upstream/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
)
答案 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
上创建一个名称相同的新分支。