Git 克隆分支

标签 git github git-branch

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

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

git branch one
git branch two
git branch three

那么当我运行 git branch 时我应该看到四个分支:one , two , three , master 。 我将代码推送到 GitHub,一切都很好。

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

我的问题:

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

最佳答案

So then when I run git branch I should see the four branches one - two - three -master ...

是的。您在本地存储库中创建了三个新分支,因此这三个分支存在。您的 Git 最初创建了 master,因此它也存在。

I push the code to GitHub and all is fine.

当您运行 git push 时,您正在将提交推送到 GitHub。在您拥有的、他们没有的、他们需要的任何新提交到达 GitHub 后,您的 Git 会要求 GitHub 的 Git 在他们的存储库中创建或更新一些分支名称。

如果你运行:

git push github one

您发送到 GitHub 的提交将是通过您的分支名称 one 找到的提交。 (如果他们已经有部分或全部提交,您的 Git 就会跳过发送它们,从而使推送速度更快。)然后您的 Git 要求他们的 Git 创建或更新他们的分支名称一个.

如果你运行:

git push github one two three

如有必要,您将让 Git 发送所有三个分支所需的提交,然后礼貌地要求 GitHub 创建或更新所有三个分支名称。

您没有准确说明您运行的 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 命令是连续几个 Git 命令的简写(如果需要的话,先加上一个非 Git 命令,以创建一个空目录来运行 Git 命令) )。这些命令:

  • 从其他 Git 存储库(在 GitHub 上)复制所有提交,但是
  • 不复制任何分支。

相反,您自己的 Git 将采用它们的分支名称 - 可以是 只是 mastermain,也可以是所有四个分支名称,正如我们已经指出的,并将这些名称更改为非分支名称。 Git 生成的名称是:

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

等等。这些是远程跟踪名称,而不是分支名称。它们将由 gitbranch-rgitbranch-a 打印出来,但不会由 gitbranch 打印出来。

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

如果您不使用-b选项,您的Git将询问其他Git推荐的名称。标准建议是 mastermain (无论他们有什么)。这就是为什么你们都有一位大师

关于Git 克隆分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66865785/

相关文章:

javascript - GitHub API with Angular - 如何获取用户的公共(public) repo ?

github - 为 fork 的 github 项目的 fork 的 github 项目准备拉取请求

git - 如何避免本地分支机构的意外 dcommit

git - 如何从 jenkins 登录到 git bitbucket 存储库

reactjs - react 设置 : Git submodule is ignored by Husky - 6. 0.0

python - .gitignore 在 Windows 上开发 Python 和 Django 应用程序时

linux - Git - 将 Github 存储库与本地存储库同步?

git - Git (master|REBASE 1/1) 是什么意思?我该如何摆脱它?

git - 从 git 历史记录中删除大文件?

git - 权限被拒绝错误 - jenkins(shell 脚本)