我在 GitHub 上遇到了一个问题: 我们有一个任务,我们应该在3个分支上工作,每个人完成他们的工作后,我们需要合并这些分支。 我们在 GitHub 上创建了一个存储库(假设是我创建的),并且我邀请了我的两个伙伴访问。
当我在终端中创建 repo 时,我将空文件推送到 GitHub(我们还没有开始工作)。 现在我们开始创建分支,我作为主我在终端中运行这三个命令:
git branch one
git branch two
git branch three
所以当我运行 git branch
时,我应该看到四个分支:one
、two
、three
、master
。
我将代码推送到 GitHub,一切正常。
当我和我的朋友想将 repo 克隆到我们的机器时,问题就开始了,例如我的第一个同事运行 git clone reponame
,当他运行 git branch
时,他只看到分支 master
.
我的问题:
答案 0 :(得分:3)
所以当我运行 git branch 时,我应该看到四个分支一 - 二 - 三 -master ...
是的。您在本地存储库中创建了三个新分支,因此这三个分支存在。您的 Git 最初创建了 master
,因此它也存在。
我将代码推送到 GitHub,一切正常。
当您运行 git push
时,您将 提交 推送到 GitHub。在您拥有、没有或将需要的任何新提交到达 GitHub 后,您的 Git 会要求 GitHub 的 Git 在他们的存储库中创建或更新一些分支名称。< /p>
如果你运行:
git push github one
您发送到 GitHub 的提交将是通过您的分支名称 one
找到的提交。 (如果他们已经有部分或全部提交,您的 Git 将跳过发送它们,从而加快推送速度。)然后您的 Git 要求他们的 Git 创建或更新他们的分支名称{{1} }.
如果你运行:
one
如有必要,您将让您的 Git 发送所有三个分支所需的提交,然后礼貌地要求 GitHub 创建或更新所有三个分支名称。
您没有准确说明您运行的 git push github one two three
类型,因此我们无法确定您在 GitHub 上创建了哪些名称(如果有)。
当我和我的朋友想将 repo 克隆到我们的机器时,问题就开始了,例如我的第一个同事运行 git clone reponame 并且当他运行 git branch 时,他只看到 master。
git push
命令是连续多个 Git 命令的简写(如果/根据需要,首先加上一个非 Git 命令,以创建一个空目录来运行 Git 命令)。这些命令:
相反,您自己的 Git 将采用它们的分支名称——可以是只是 git clone
或 master
,或者可以是所有四个分支名称,正如我们已经提到的——并将这些名称更改为非分支名称。你的 Git 产生的名字是:
main
(或 origin/master
)代表他们的 origin/main
(或 master
);main
代表他们的 origin/one
,如果他们有的话;one
代表他们的 origin/two
,如果他们有的话;等等。这些是远程跟踪名称,而不是分支名称。它们将由 two
和 git branch -r
打印,但不会由 git branch -a
打印。
根据它们的分支名称创建这些远程跟踪名称后,您的 Git 现在在您的中创建了一个分支名称em> 克隆。这是 git branch
的最后一步:它使用您说要使用的分支名称和 git clone
选项,并生成该名称——使用相同名称的 -b
版本来查找正确的提交——然后检查该提交,以便您可以看到该提交中的文件。
如果您不使用 origin/
选项,您的 Git 将询问另一个 Git it 推荐的名称。标准建议是 -b
或 master
(以它们拥有的为准)。所以这就是为什么你们都得到了 main
。