github上fork和branch之间的区别

问题描述 投票:114回答:7

如果我分叉一个托管在github上的项目。我分叉所有分支吗?我怎么知道我的fork基于哪个分支?换句话说哪个分支将被下载到我的PC?

github branch git-branch git-fork
7个回答
42
投票

GitHub上的所有分支都将被复制到一个分支中。 (显然,这不包括从未被推送到GitHub的分支。)

但是fork是一个GitHub到GitHub操作;什么都没有复制到您的PC。它与Git克隆并不完全相同。如果您想询问“克隆项目时复制了什么?”,请参阅git-clone(1)手册。


135
投票

想一想:

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

主仓库的每个分支对应于贡献者的工作。 fork实际上是一个Github(而不是Git)构造,用于在您的用户帐户中存储repo的克隆。作为克隆,它将在您创建fork时包含主仓库中的所有分支。

fork和/或主仓库中的每个分支都可以对应多种类型的东西,具体取决于您的工作方式。每个分支可以引用项目的一个版本,但也可以对应于不同的开发渠道,如修补程序或实验工作。

拉取请求(在GitHub生态系统中)对应于任务。每次我想向主回购贡献一个孤立的完成任务时,我创建一个与该任务中的提交相对应的拉取请求。这些提交是从我的分支或我的分支拉到主回购。

提交是对代码的一组更改。这是关于Git最有趣的事情之一。您不传输文件,您传输更改日志。


9
投票

Fork是GitHub端的克隆(它克隆了所有东西)。 当您克隆回购时,您将获得所有回购的所有历史记录及其所有分支。

即使你理论上可以使用change the default branch of a remote repo,但是来自GitHub repo的克隆主要是寻找主分支。要更改GitHub克隆将获得的“默认”分支,您需要重命名主分支。


3
投票

如果您分叉一个项目,那么您将整个项目的副本复制到您的git hub帐户。你没有在你的电脑上做任何事情

要在PC中制作副本,您必须克隆它并提取所有内容,然后您将获得该项目的所有分支和代码


2
投票

如果您从Github网站创建项目的分支,您将获得上游项目的所有分支。

如果你从新的叉子克隆到你的本地PC,你的PC上将有origin遥控器指向你在Github上的叉子的主分支。


1
投票

这可以很好地解释。你在GitHub有一个中央存储库。每当您在个人计算机上对其进行克隆以进行某些更改时,主存储库的本地克隆称为fork。

分支是不同的,包含在fork / repo中。实际上,分支机构是您在不同发展阶段的工作。它们是在需要时创建的,用于保存一组功能,提供对不同用户的访问,向客户端演示站点等。


0
投票

我想分享一个真实的例子,说明我们何时使用Branches以及何时使用Forks

我们在我们的商店有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使用:现在是我们必须使用我们的软件包做一些技巧,所以我们通过fork创建生产包的克隆。 composer.json文件可以更新为指向现在位于用户或组路径的fork

所以我们将在https://github.com/yardpenalty/mypackage.git中创建一个fork

并称之为https://github.com/yardpenalty/yards/mypackage.git

现在我们可以更新我们的composer.json文件,指向我们的“存储库”中的这个包:[像这样的数组,我们去吧!

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

]

© www.soinside.com 2019 - 2024. All rights reserved.