【问题标题】:git- Creating a branch which will be pushed to a remote latergit - 创建一个稍后将被推送到远程的分支
【发布时间】:2014-03-31 14:47:43
【问题描述】:

我有一个脚本,它会根据外部信息(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.

有什么办法吗?

【问题讨论】:

  • @DKrueger 在准备好之前创建一个远程分支。我在脚本中执行这些命令,我​​不希望脚本创建远程分支,只是准备它,以便我可以通过简单地输入“git push”来创建远程。
  • @Daniel 所以你想拥有origin/myBranch 而没有origin 实际上拥有myBranch?
  • @Schleis 是的,这就是它的核心。

标签: git


【解决方案1】:

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

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

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

【讨论】:

  • 这完全符合我的要求!谢谢。我以为我也试过这个,但一定错过了一些关键部分。我的 push.default 已经设置为 simple。
【解决方案2】:

您可以在推送时使用-u 选项来跟踪您的本地分支

git push -u origin myBranch

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

【讨论】:

  • 这会导致远程在准备好之前拥有分支(请参阅其他答案)。不是我想要的。
【解决方案3】:

尝试使用--track 而不是--set-upstream-to,例如:

git branch --track origin/mynewbranch

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

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 2020-06-09
    • 2016-11-06
    • 2011-09-10
    • 2016-07-08
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多