Git 克隆分支

时间:2021-03-30 06:29:17

标签: git github git-branch

我在 GitHub 上遇到了一个问题: 我们有一个任务,我们应该在3个分支上工作,每个人完成他们的工作后,我们需要合并这些分支。 我们在 GitHub 上创建了一个存储库(假设是我创建的),并且我邀请了我的两个伙伴访问。

当我在终端中创建 repo 时,我将空文件推送到 GitHub(我们还没有开始工作)。 现在我们开始创建分支,我作为主我在终端中运行这三个命令:

git branch one
git branch two
git branch three

所以当我运行 git branch 时,我应该看到四个分支:onetwothreemaster。 我将代码推送到 GitHub,一切正常。

当我和我的朋友想将 repo 克隆到我们的机器时,问题就开始了,例如我的第一个同事运行 git clone reponame,当他运行 git branch 时,他只看到分支 master .

我的问题:

  1. 为什么会发生这种情况,为什么我们没有看到带有克隆的分支?
  2. 我们如何克隆包含所有分支的存储库?

1 个答案:

答案 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 存储库(在 GitHub 上)复制所有提交,但是
  • 复制任何分支

相反,您自己的 Git 将采用它们的分支名称——可以是只是 git clonemaster,或者可以是所有四个分支名称,正如我们已经提到的——并将这些名称更改为非分支名称。你的 Git 产生的名字是:

  • main(或 origin/master)代表他们的 origin/main(或 master);
  • main 代表他们的 origin/one,如果他们有的话;
  • one 代表他们的 origin/two,如果他们有的话;

等等。这些是远程跟踪名称,而不是分支名称。它们将由 twogit branch -r 打印,但不会由 git branch -a 打印。

根据它们的分支名称创建这些远程跟踪名称后,您的 Git 现在在您的中创建了一个分支名称em> 克隆。这是 git branch 的最后一步:它使用您说要使用的分支名称和 git clone 选项,并生成该名称——使用相同名称的 -b 版本来查找正确的提交——然后检查该提交,以便您可以看到该提交中的文件。

如果您不使用 origin/ 选项,您的 Git 将询问另一个 Git it 推荐的名称。标准建议是 -bmaster(以它们拥有的为准)。所以这就是为什么你们都得到了 main