branch-1branch-2,并更改和提交代码。被推送的分支是名为branch-1还是branch-2?
发布于 2018-05-07 17:15:25
完整的答案有点长,但根据你的评论,简短的答案是:
我用了
git push origin master
除了master之外,您没有推动其他任何东西,所以这些其他分支名称都没有涉及到。
冗长的答案
值得从以下几个方面开始:git push的语法是:
git push remote refspec1 refspec2 ... refspecN
也就是说,命令中的单词origin是远程的,而单词master是refspec (而且您使用的正是一个这样的refspec,尽管您可以推送多个refspec)。
这里的远程参数只是Git所称的遥控器的名称,我承认它是一个循环定义,并不十分有用。但是我们可以通过示例来定义它:origin是一个远程的,在大多数情况下,origin是您唯一的远程。因此,git push origin ...中的第三个词始终是origin。只有在使用git远程添加(单击链接查看其文档)添加更多遥控器时,才会在这里编写任何不同的内容。
更有趣的部分是改装。refspec在其第二个最简单的形式中,只是由冒号(如master:master )分隔的一对名称(通常是分支名称)。冒号左侧的名称是源引用,右侧的名称是目标引用。如果你写:
git push origin master:master您要求您的Git调用另一个Git,在存储在origin名称下的URL上,并让您的Git请求Git设置它们的master-the :master部件--就像您设置自己的master,master:master的master:部分一样。
我说过这是第二个最简单的形式,因为最简单的形式只是写你自己的分支名称。当您这样做时,Git假设--至少对于git push --您希望在另一边设置相同的名称,因此master只是master:master的缩写。
如果你想让你的Git让他们的Git设置他们的branch-2,你必须在参考规范中放一些master以外的东西。例如,您可以运行:
git push origin branch-2:branch-2要求他们的Git根据你的branch-2设置他们的branch-2。您可以通过省略:branch-2部分来缩略这一点。请注意,您还可以:
git push origin master:branch-2这要求他们的Git设置他们的branch-2基于您的master,而不是您的branch-2!
如果您这样做,您将发现git push的其他一些有趣的方面。具体地说:
push.default,它(如果您的Git不是太古老的话)默认为simple。push.default设置为simple,则Git“希望”将master推送到master,将branch-2推送到branch-2。(如果将push.default设置为其他值,则Git将具有不同的执行功能。)simple设置意味着只要为每个分支设置上游,就可以只运行git push。
git推送
将获取当前分支的上游设置(不管是什么),并将其用于git push到相应的远程上同名的分支。要使最后一步有效,您需要分支名master的上游为origin/master,分支名称branch-2的上游为origin/branch2。那么,上游到底是什么?
分支名称的上游设置
每个分支可以有一个上游(1)。一条支路可能在根本没有上游的情况下启动。由于历史原因,上游实际上由两部分组成,但您可以将其设置为:
git branch --set-upstream-to=origin/branch2 branch2例如,将branch2的上游设置为origin/branch2。
通常,任何名为X的分支的上游都是origin/X。simple设置push.default需要这种匹配的名称,这意味着如果您重命名一个分支,您还必须更改它的上游(如果它之前有一个)。
在设置一个分支的上游有一个皱纹,特别是在你刚刚创建它之后。您刚刚创建了branch-2-well,从技术上讲,您创建了branch-1,然后将其重命名为branch-2,但这等同于相同的事情--因此Git over at origin还没有一个名为branch-2的分支。这意味着您自己的Git还没有一个origin/branch-2,因为您的Git's origin/*名称是您的Git的方式来记住他们的Git有什么,而他们的Git还没有这个。
归根结底,在你创建了一个分支之后,当你第一次推它的时候,你必须拼出它的全部推杆:
git push origin branch-2例如,或:
git push origin branch-2:branch-2如果你想说清楚的话。一旦您这样做了,您就可以使用git branch --set-upstream-to
git push origin branch-2
git branch --set-upstream-to=origin/branch-2 branch-2因为push步骤在原点上创建branch-2,在此之后,您的Git会通过创建您自己的origin/branch-2来记住它们的Git有一个branch-2。(呜呜!)
不过,这是一条捷径。与键入两个命令不同,您可以使用一个命令:
git push -u origin branch-2这里的-u选项告诉git push,它应该尝试push,如果成功,它将立即为您运行git branch --set-upstream-to。
完成此操作后,branch-2将origin/branch-2作为其上游,因此,当您签出branch-2时,您可以运行:
git push您的simple设置push.default将告诉git push,它应该查找上游(origin/branch-2),并使用它将branch-2推送到origin的branch-2。
发布于 2018-05-07 17:05:08
正如你在评论中已经说过的。您使用的git push origin master来源是您的远程名称,并掌握您的分支名称。这就是你把它推到你的master分支的原因。
https://stackoverflow.com/questions/50217699
复制相似问题