Git: fork /远程/克隆概念

标签 git github

我正在尝试理解/形象化 fork repo 协议(protocol)的元素。我的起始引用是这个 help page .

第一个问题:

当我 fork 一个 repo 时,例如Spoon-Knife 在 GitHub 上(即单击他们网站上的 Fork 按钮),这是否意味着 Spoon-Knife 已复制到我的 GitHub 帐户?真正的副本是否真的发生了,还是只是一个概念?

第二个问题:

帮助页面的下一步是克隆:

$ git clone git@github.com:username/Spoon-Knife.git

这个命令在我的本地机器上复制了一份源代码。它是否从我的 GitHub 帐户中的 fork /复制的 repo 克隆而来(请参阅我的第一个问题)?或者,来自原始的 Spoon-Knife 存储库?

第三个问题:

配置 Remote 的步骤:

When a repo is cloned, it has a default remote called origin that points to your fork on GitHub, not the original repo it was forked from. To keep track of the original repo, you need to add another remote named upstream.

那么,origin 是我们本地副本和我的 GitHub 帐户上的 repo 副本之间的某种“代理”吗?而且,上游怎么样?

预先感谢您的帮助。

最佳答案

  1. 当您“fork”时,您所做的就是在他们的 git 存储库上有效地创建一个您可以 checkin 的分支。

  2. 您克隆到的本地副本只是从您在 git-hub 上创建的分支克隆并链接到该分支。请记住,分支只是指向提交对象的指针,因此当您“ fork ”时,您只是在他们的存储库中添加了一个分支名称,该分支名称指向其 master 的当前头部。

  3. git 中的远程只是外部地址的存储库的名称。你的默认“来源”是由 git 设置的,只是一个命名的远程。 “upstream”只是另一个名称,指向您最初分支的原始母版,以便您可以在母版和您自己的分支之间 pull 更改。您可以使用 git remote -v 查看您的 Remote ,并轻松添加它们以跟踪任何外部可用的 git 存储库上的任何分支。

关于Git: fork /远程/克隆概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104375/

相关文章:

Git - 我应该在每个分支中有不同的自述文件吗?

Azure 部署 - 授权后无法查看所有存储库

Git 获取单个提交

git - 图中的分支颜色

git - 我如何为 GitHub 上的维基页面发出 pull 请求?

Git - 我可以从命令行确定 fork repo 的来源吗?

github - 拉取请求被拒绝时如何更新 GitHub fork 存储库?

windows - Git 提交后 Hook : How to start a bat-file in Windows

Git 推送导致 "fatal: sha1 file ' <stdout >' write error: Invalid argument"错误

node.js - 如果在 Git bash (mintty) 中使用 npm 脚本,则没有控制台颜色