branch-1
branch-2
,代码已更改并已提交。推送的分支是否被命名为branch-1
或branch-2
?
答案 0 :(得分:0)
正如您在评论中所说的那样。
您使用git push origin master
,其中origin是您的远程名称并掌握您的分支名称。这就是你将它推到master
分支的原因。
答案 1 :(得分:0)
完整答案有点长,但根据你的评论做出简短回答:
我使用了
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 remote add (click link to see its documentation)添加更多遥控器才能在这里写出不同的东西。
更有趣的部分是refspec。 refspec 是第二种最简单的形式,只是一对名称 - 通常是分支名称 - 用冒号分隔,例如master:master
。冒号左侧的名称是源引用,右侧的名称是目标引用。如果你写:
git push origin master:master
你要求你的Git在名称origin
下存储的网址上调用另一个Git,然后让你的Git让他们的Git设置他们的 master
- :master
部分 - 与您设置自己的master
,master:
的{{1}}部分相同。
我说这是第二个最简单的形式,因为最简单的形式只是编写自己的分支名称。当你这样做时,Git假定 - 至少master:master
- 你想在另一边设置相同的名称,这样git push
只是master
的缩写。 1}}。
如果您希望让Git让他们的Git设置他们的 master:master
,您必须在refspec中添加branch-2
以外的内容。例如,您可以运行:
master
要求他们的Git根据您的git push origin branch-2:branch-2
设置branch-2
。您可以通过省略branch-2
部分来缩写。请注意,您也可以这样做:
:branch-2
要求他们的Git根据您的git push origin master:branch-2
设置branch-2
,而不是master
!
如果您执行其中任何一项,您会发现branch-2
的其他一些有趣的方面。具体做法是:
git push
,如果你的Git不太古老,默认为push.default
。simple
设置为push.default
,则Git"需要"将simple
推送到master
和master
推送到branch-2
。 (如果您的branch-2
设置为其他值,Git会执行不同的操作。) push.default
设置意味着您只需运行simple
,提供为每个分支设置上游。
git push
将采用当前分支的上游设置,无论是什么,并将其用于git push
到同名的分支上适当的遥控器。
要使最后一位有效,您需要将分支名称git push
的上游设为master
,将分支名称origin/master
的上游设为branch-2
。那么,上游究竟是什么?
每个分支可以有一个(1)上游。分支可以从没有上游开始。由于历史原因,上游实际上由两部分组成,但您可以使用:
进行设置origin/branch2
例如,将git branch --set-upstream-to=origin/branch2 branch2
的上游设置为branch2
。
通常,名为 X 的任何分支的上游都是origin/branch2
。 origin/X
的simple
设置需要这种匹配名称,这意味着如果重命名分支,则还必须更改其上游(如果之前有一个)。
设置分支的上游时会出现皱纹,尤其是在刚刚创建分支之后。您刚刚创建了push.default
- 从技术上讲,您创建了branch-2
,然后将其重命名为branch-1
,但这相同,所以Git结束于branch-2
< em>没有名为origin
的分支。这意味着你自己的Git还没有branch-2
,因为你Git的origin/branch-2
名字是你Git记住他们的Git所拥有的方式,而他们的Git没有&#39}但是还有这个。
这归结为在创建分支后,第一次推送它,必须拼出完整的推送:
origin/*
例如,或者:
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
,之后你的Git通过创建自己的{{1}来记住他们的Git有branch-2
}。 (呼!)
尽管如此,还是有一个捷径。您可以使用单个命令来代替输入两个命令:
branch-2
origin/branch-2
选项告诉git push -u origin branch-2
它应该尝试推送,如果成功,请立即为您运行-u
。
完成此操作后,git push
上游有git branch --set-upstream-to
,因此当您branch-2
签出时,您可以运行:
origin/branch-2
并且branch-2
的{{1}}设置会告诉git push
它应该查找上游(simple
)并使用它来推送push.default
到git push
&#39; origin/branch-2
。