Github 上叉子和树枝的区别

如果我分支了一个在 github 上托管的项目。我要把所有的树枝都叉起来吗?我如何知道我的叉子是基于哪个分支的?换句话说,哪个分支会被下载到我的电脑上?

105073 次浏览

Fork 是 GitHub 方面的克隆(它克隆了所有东西)。
当你克隆一个回购协议时,你会得到所述回购协议及其所有分支的全部历史。

尽管理论上可以使用 更改远程回购的默认分支,但是来自 GitHub 回购的克隆主要寻找主分支。这意味着要更改 GitHub 克隆将获得的“ default”分支,您需要重命名主分支。

GitHub 上的所有分支都将在 fork 中复制。(显然,这不包括最初从未推送到 GitHub 的分支。)

但是 fork 是 GitHub 到 GitHub 的操作; 不会将任何内容复制到您的电脑上。它与 Git 克隆人不完全相同。如果您想问“当我克隆一个项目时复制了什么?”请参阅 git-clone(1)的使用手册。

如果您从 Github 网站创建了一个项目的分支,那么您就可以从上游项目中获得所有分支。

如果您从您的新铸造的叉子克隆到您的本地电脑,您将有 origin远程在您的电脑上指向您的叉子在 Github 的主分支。

这样想:

Repo [ sitory ] 对应于团队在一个或多个分支上的协作工作。所有贡献者都有自己的副本。

主要回购的每个 叉子对应于一个贡献者的工作。Fork 实际上是 Github (不是 Git)构造,用于在用户帐户中存储回购的克隆。作为一个克隆,它将包含在您制作分支时主回购中的所有分支。

在 fork 和/或主回购中的每个 树枝可以对应几种事情,这取决于您希望如何工作。每个分支可以引用项目的一个版本,但也可以对应不同的开发渠道,如修补程序或实验工作。

撤回请求(在 GitHub 生态系统中)对应于该任务。每次我想将一个独立完成的任务贡献给主回购,我都会创建一个对应于该任务中的 提交的 pull 请求。这些提交从我的 叉子或我的 树枝提交到 主要回购

承诺是对代码的一组更改。这是 Git 最有趣的地方之一。您不传输文件,而是传输更改日志。

如果您分叉了一个项目,那么您就是在将整个项目的副本复制到您的 git hub 帐户中。你没有应付你的电脑的任何东西

为了在你的电脑上复制一个拷贝,你必须克隆它,拉出所有的东西,你会得到所有的分支和该项目的代码

这可以很好地解释。您在 GitHub 上有一个中央存储库。无论何时在您的个人计算机上使用它的克隆进行一些更改,这个主存储库的本地克隆都称为 fork。

分支是不同的,它包含在 fork/repo 中。事实上,分公司是你在不同发展阶段的工作。它们是根据需要创建的,以便保存一组功能、为不同的用户提供访问权限、向客户演示站点等等。

我想分享一个 当我们使用树枝,当我们使用叉子的真实生活例子

我们店里有 GitLab,有时我们不得不处理 Laravel 项目的软件包。我们通常会创建一个分支,并在使用实际的 Laravel 项目时,将更改推送到在本地 VM dev 环境中测试的分支。

假设我们的项目位于

https://github.com/yardpenalty/mainproject.git

分行用途:

假设这个分支名为 It_doesnt_matter

一旦我们有了我们的分支,我们想要的生产方式,然后我们最后推到这个分支和 创建合并请求,然后进入 UAT 进行测试。一旦测试通过了 QC,变更就会合并到生产中。

It_doesnt_matter 树枝中的 合并现在被推送到主项目

https://github.com/yardpenalty/mainproject.git

假设包项目位于

https://github.com/yardpenalty/mypackage.git

请记住,mainproject 在生产中使用这个包,因此我们不能仅仅通过将它们推送到这个包(还有其他原因)来进行更改。假设 Web 开发人员必须编辑这个包,以便在生产环境中进行更改。

一个简单的分支也不能工作,因为我们不能在不发布包的情况下看到我们的更改等等。

叉子用法: 现在是我们必须对我们的包做一点小手脚的时候了,所以我们通过 fork 创建一个生产包的克隆。Json 文件可以更新到现在位于 < strong > User 或 Group 路径的 fork

因此,我们将在 https://github.com/yardpenalty/mypackage.git中创建一个 fork

取名为 https://github.com/yardpenalty/yards/mypackage.git

现在我们可以更新我们的 作曲家 Json文件,以指向我们的“存储库”中的这个包: [这样的数组,我们走!

 {
"type": "github",
"url": "https://github.com/yardpenalty/yard/mypackage.git"
}

]