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

时间:2014-02-27 21:34:41

标签: git

我有一个脚本会自动创建一个新分支,其名称基于外部信息(JIRA票证)。在我提交并推送一些代码之前我不想创建远程分支,但我不想做“git push --set-upstream origin”

换句话说,我想在推进之前设置上游。

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

我试过了:

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

这导致:

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

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:12)

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

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将无法执行您想要的操作,因为上游远程系统上没有匹配的分支。所以:

git config push.default simple

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

这样做之后,

git push

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

答案 1 :(得分:2)

当您推送跟踪本地分支时,您可以使用-u选项

git push -u origin myBranch

http://csurs.csr.uky.edu/cgi-bin/man/man2html?1+git-push

答案 2 :(得分:1)

尝试使用--track代替--set-upstream-to,例如:

git branch --track origin/mynewbranch

我还没有发现两者之间究竟有什么区别,但是--track似乎做了你想要的事情(当我发现这个问题时我想做什么! )