Git,Github - origin/main vs origin/master [重复]
Posted
技术标签:
【中文标题】Git,Github - origin/main vs origin/master [重复]【英文标题】:Git, Github - origin/main vs origin/master [duplicate] 【发布时间】:2022-01-10 17:20:45 【问题描述】:我正在努力理解 git 的基本概念。
我已经设置并克隆了一个远程存储库。我正在关注一个教程。 我的问题是我不明白两者之间的区别:
origin/main 和 origin/master
在教程中,当他在终端上键入 git status 时,它会显示 origin/master。 在我的终端上,它出现:
在主分支上
你的分支是最新的'origin/main'
我想了解为什么我得到的是 origin/main 而不是 origin/master。
【问题讨论】:
【参考方案1】:当您克隆一些现有的存储库时,您会得到他们的所有提交 1 并且没有他们的分支名称。但他们仍然有 分支名称。你的 Git 对这些所做的就是将它们变成你自己的远程跟踪名称。2
像origin/master
或origin/main
这样的远程跟踪名称 是您的Git 记住他们的 Git 的分支 名称之一的方式。 3 因此,如果他们有一个名为main
的分支,您将获得一个远程跟踪名称origin/main
。如果他们有一个名为master
的分支,你会得到一个远程跟踪origin/master
。
一旦git clone
完成将他们的提交复制到您的存储库,并将他们的分支名称重命名为您的远程跟踪名称,您的 Git 然后在 您的 中创建一个 branch 名称> 存储库。你选择你的 Git 应该创建的分支名称,使用 -b
选项到 git clone
:
git clone -b develop https://example.com/path/to/repo.git
例如。
如果您不提供-b
选项,您的Git 会询问他们的Git他们推荐哪个名称。根据“他们”是谁,他们可能会推荐master
或main
。
这里有一点有点奇怪,那就是您的 Git 要求您选择的这个名称与 他们的 名称之一匹配。由于你的名字是你的,他们的名字是他们的,两者不需要匹配,4 对此没有真正的要求,但你的 Git 仍然需要它,可能是为了减少困惑。所以如果他们有only main
,或only master
,这就是你会得到的名字。
(单一)标准名字曾经是master
。然后 GitHub 将 他们的 更改为 main
,现在出现了混乱。如果您从头开始创建存储库(而不是克隆它),则可以选择所需的任何初始分支名称。5
1从技术上讲,您获得的提交少于他们的所有提交,但通常的情况是您获得所有提交。
2Git 调用这些 远程跟踪分支名称,但它们不是 分支 名称:git switch origin/main
给你一个错误,因为例如,git checkout origin/main
产生 Git 所谓的 分离的 HEAD。同时,branch 这个词在 Git 中被严重过度使用。所以从这句话中去掉branch这个词更有意义。这些名称只是您存储库中记住其他人的分支名称的名称;我们可以称它们为“深红色的名称”,但它们实际上会跟踪一些“远程”Git 的分支名称,因此 remote-tracking 是合理的。
3“您的 Git”是指“您的 Git 软件,在您的存储库中工作”。因此,“他们的 Git”是他们在存储库中运行的软件。
4也就是说,你可以调用你的分支之一dwayne
,而他们调用他们的分支之一rapunzel
,但你仍然可以在你的dwayne
上进行提交匹配他们的rapunzel
。只是......这样做令人困惑。当目标是在双方都有相同的提交时,人类似乎更喜欢在双方使用相同的名称。
这个想法可能出错:如果您有两个不同的遥控器,例如 bob
连接到 Bob 的 Git,alice
连接到 Alice 的,bob
和 @987654348 @ 有一个名为 cream
的分支,但一个指向乳制品,另一个指向 the 1960s band,您将无法在 您的 存储库中拥有一个名为 cream
的分支不知何故适用于这两者。所以 Git 并不需要它,除非在最初的git clone
步骤中。
5这需要一个相当最新的 Git 来使用 git init
命令来完成。对于较旧版本的 Git,您可以执行 git init
并以名称 master
开始,然后重命名分支。
【讨论】:
【参考方案2】:master
是 Git(和 GitHub)主分支的旧名称。这个词被认为是冒犯性的,并引用了奴隶制的含义。大约一年前,Git 和 GitHub 将默认分支的名称改为更中性的 main。
部分项目已切换,部分项目保留旧名称master
。从技术角度来看,它只是一个名称 - 您可以使用名为 main
、master
或 spongebob-squarepants
的默认分支创建一个项目。
【讨论】:
【参考方案3】:过去被称为大师。现在人们使用 main 代替。基本一样。
【讨论】:
这基本上是 OP 应该需要的所有答案。以上是关于Git,Github - origin/main vs origin/master [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Git:当我还没有提取更新时,为啥 git 会说“您的分支与 origin/main 是最新的”?
git push -u origin main 报错 remote: Invalid username or password.
在 $git push -u origin main 命令之后,Git bash 没有请求任何身份验证,实际上啥都不做
在 $git push -u origin main 命令之后,Git bash 没有请求任何身份验证,实际上啥也没做