Git 克隆分支
Git clone branches
我遇到了 GitHub 的问题:
我们有一个任务,我们应该在 3 个分支上工作,在每个人完成他们的工作之后我们需要合并分支。
我们在 GitHub 上创建了一个回购协议(假设我创建了它)并且我邀请了我的两个同事访问。
当我在终端中创建存储库时,我将空文件推送到 GitHub(我们还没有开始工作)。
现在我们开始创建分支,我做主我在终端里运行那三个命令:
git branch one
git branch two
git branch three
那么当我 运行 git branch
我应该看到四个分支:one
、two
、three
、master
。
我将代码推送到 GitHub,一切正常。
当我和我的朋友想将 repo 克隆到我们的机器时,问题就开始了,例如我的第一个同事 运行s git clone reponame
和当他 运行s git branch
他只看到分支 master
.
我的问题:
- 为什么会这样,为什么我们看不到带有克隆的分支?
- 我们如何克隆包含所有分支的存储库?
So then when I run git branch I should see the four branches one - two - three -master ...
是的。您在本地存储库中创建了三个新的 b运行ches,因此这三个 b运行ches 存在。您的 Git 最初创建了 master
,因此它也存在。
I push the code to GitHub and all is fine.
当您 运行 git push
时,您正在将 提交 推送到 GitHub。在您拥有的、他们不需要的、他们需要的任何新提交到达 GitHub 之后,您的 Git 要求 GitHub 的 Git 创建或更新他们 存储库中的一些 b运行ch 名称。
如果你运行:
git push github one
您发送到 GitHub 的提交将是通过您的 b运行ch 名称 one
找到的提交。 (如果他们已经有部分或全部这些提交,您的 Git 将跳过发送它们,从而加快推送速度。)然后您的 Git 要求他们的 Git 创建或更新 他们的b运行频道名one
.
如果你运行:
git push github one two three
你会Git发送所有三个b运行ches所需的提交,如有必要,然后礼貌地要求GitHub创建或更新所有三个 b运行ch names.
您没有准确说明您 运行 的 git push
类型,因此我们无法确定您在 GitHub 上创建了哪些名称(如果有的话)。
The problem started when my friends and I want to clone the repo to our machines, example my first colleague runs git clone reponame and when he runs git branch he just sees the master.
一个git clone
命令是shorthand连续几个Git命令(首先加上一个非Git命令,if/as需要,创建一个空目录,在其中执行 运行 Git 命令)。这些命令:
- 从另一个 Git 存储库(在 GitHub 上)复制所有 提交,但是
- 复制 none 的 b运行ches.
相反,您自己的 Git 将使用他们的 b运行ch 名称——可以是 只是 master
或 main
,或者可以是所有四个 b运行ch 名称,正如我们已经指出的那样,将这些名称更改为非 b运行ch 名称。您的 Git 生成的名称是:
origin/master
(或origin/main
)为他们master
(或main
);
origin/one
对于他们的 one
,如果他们有的话;
origin/two
为他们 two
,如果他们有的话;
等等。这些是 远程跟踪名称,而不是 b运行ch 名称。它们将被 git branch -r
和 git branch -a
打印出来,但不会被 git branch
.
打印出来
从他们的 b运行ch 名称创建这些 remote-tracking 名称后,您的 Git 现在在你的克隆中创建一个 b运行ch名称。这是 git clone
的最后一步:它采用您说要使用的 b运行ch 名称,以及您的 -b
选项,并使用 origin/
版本创建该名称找到正确的提交——然后检出该提交,这样您就可以看到该提交中的文件。
如果您不使用 -b
选项,您的 Git 将询问其他 Git 它 推荐的名称。标准建议是 master
或 main
(取其中一个)。所以这就是为什么你们都得到了 master
.
我遇到了 GitHub 的问题: 我们有一个任务,我们应该在 3 个分支上工作,在每个人完成他们的工作之后我们需要合并分支。 我们在 GitHub 上创建了一个回购协议(假设我创建了它)并且我邀请了我的两个同事访问。
当我在终端中创建存储库时,我将空文件推送到 GitHub(我们还没有开始工作)。 现在我们开始创建分支,我做主我在终端里运行那三个命令:
git branch one
git branch two
git branch three
那么当我 运行 git branch
我应该看到四个分支:one
、two
、three
、master
。
我将代码推送到 GitHub,一切正常。
当我和我的朋友想将 repo 克隆到我们的机器时,问题就开始了,例如我的第一个同事 运行s git clone reponame
和当他 运行s git branch
他只看到分支 master
.
我的问题:
- 为什么会这样,为什么我们看不到带有克隆的分支?
- 我们如何克隆包含所有分支的存储库?
So then when I run git branch I should see the four branches one - two - three -master ...
是的。您在本地存储库中创建了三个新的 b运行ches,因此这三个 b运行ches 存在。您的 Git 最初创建了 master
,因此它也存在。
I push the code to GitHub and all is fine.
当您 运行 git push
时,您正在将 提交 推送到 GitHub。在您拥有的、他们不需要的、他们需要的任何新提交到达 GitHub 之后,您的 Git 要求 GitHub 的 Git 创建或更新他们 存储库中的一些 b运行ch 名称。
如果你运行:
git push github one
您发送到 GitHub 的提交将是通过您的 b运行ch 名称 one
找到的提交。 (如果他们已经有部分或全部这些提交,您的 Git 将跳过发送它们,从而加快推送速度。)然后您的 Git 要求他们的 Git 创建或更新 他们的b运行频道名one
.
如果你运行:
git push github one two three
你会Git发送所有三个b运行ches所需的提交,如有必要,然后礼貌地要求GitHub创建或更新所有三个 b运行ch names.
您没有准确说明您 运行 的 git push
类型,因此我们无法确定您在 GitHub 上创建了哪些名称(如果有的话)。
The problem started when my friends and I want to clone the repo to our machines, example my first colleague runs git clone reponame and when he runs git branch he just sees the master.
一个git clone
命令是shorthand连续几个Git命令(首先加上一个非Git命令,if/as需要,创建一个空目录,在其中执行 运行 Git 命令)。这些命令:
- 从另一个 Git 存储库(在 GitHub 上)复制所有 提交,但是
- 复制 none 的 b运行ches.
相反,您自己的 Git 将使用他们的 b运行ch 名称——可以是 只是 master
或 main
,或者可以是所有四个 b运行ch 名称,正如我们已经指出的那样,将这些名称更改为非 b运行ch 名称。您的 Git 生成的名称是:
origin/master
(或origin/main
)为他们master
(或main
);origin/one
对于他们的one
,如果他们有的话;origin/two
为他们two
,如果他们有的话;
等等。这些是 远程跟踪名称,而不是 b运行ch 名称。它们将被 git branch -r
和 git branch -a
打印出来,但不会被 git branch
.
从他们的 b运行ch 名称创建这些 remote-tracking 名称后,您的 Git 现在在你的克隆中创建一个 b运行ch名称。这是 git clone
的最后一步:它采用您说要使用的 b运行ch 名称,以及您的 -b
选项,并使用 origin/
版本创建该名称找到正确的提交——然后检出该提交,这样您就可以看到该提交中的文件。
如果您不使用 -b
选项,您的 Git 将询问其他 Git 它 推荐的名称。标准建议是 master
或 main
(取其中一个)。所以这就是为什么你们都得到了 master
.