我有一个脚本会自动创建一个新分支,其名称基于外部信息(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.
有没有办法做到这一点?
答案 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
答案 2 :(得分:1)
尝试使用--track
代替--set-upstream-to
,例如:
git branch --track origin/mynewbranch
我还没有发现两者之间究竟有什么区别,但是--track
似乎做了你想要的事情(当我发现这个问题时我想做什么! )