git-创建一个稍后将被推送到遥控器的分支


git- Creating a branch which will be pushed to a remote later

我有一个脚本,它根据外部信息(JIRA票据)自动创建一个名称为的新分支。在提交并推送一些代码之前,我不想创建远程分支,但我不想做"git push——设置上游源站"

换言之,我想在推之前设置上游。

1
2
3
4
5
git checkout -b mybranch
git <do-something-to-prepare origin/mybranch without talking to origin>
<do work>
git commit -a -m"Made my changes."
git push

我试过了:

1
git branch --set-upstream-to=origin/mynewbranch

这将导致:

1
error: the requested upstream branch 'origin/mynewbranch' does not exist.

有什么办法吗?


可以使用以下命令执行此操作:

1
2
git config branch.mybranch.remote origin
git config branch.mybranch.merge refs/heads/mybranch

这基本上与--set-upstream-to配置相同的东西,而不检查上游分支是否已经存在。

下一步是更改push.default选项,目前(git 1.9)默认为matching(文档说,这个默认值将在git 2.0中更改为simple)。使用matching并不能满足您的需要,因为上游远程没有匹配的分支。所以:

1
git config push.default simple

您可以使用--global开关全局设置(针对所有存储库)。

这样做之后,a

1
git push

将当前分支(并且仅将当前分支)推送到其上游(您在上面设置),如有必要,创建上游分支。


当您推动跟踪本地分支机构时,可以使用-u选项。

1
git push -u origin myBranch

http://csurs.csr.uky.edu/cgi-bin/man/man2html?1+Git推送


--track代替--set-upstream-to,例如:

埃多克斯1〔9〕

我还没有弄清楚这两者到底有什么区别,但--track似乎是做了你想做的事(以及我发现这个问题时想做的事!)