github上fork和branch的区别

github上fork和branch的区别,github,branch,git-branch,git-fork,Github,Branch,Git Branch,Git Fork,如果我创建了一个托管在github上的项目。我用叉子叉所有的树枝吗?我如何知道我的叉子基于哪个分支?换句话说,哪个分支将被下载到我的电脑?Fork是GitHub端的克隆(它克隆了所有内容)。 当你克隆一个回购协议时,你得到的是该回购协议及其所有分支的全部历史记录 尽管理论上可以,但GitHub repo的克隆主要查找主分支。要更改GitHub克隆将获得的“默认”分支,您需要重命名主分支。GitHub上的所有分支都将复制到一个分支中。(显然,这不包括那些一开始从未被推送到GitHub的分支。) 但

如果我创建了一个托管在github上的项目。我用叉子叉所有的树枝吗?我如何知道我的叉子基于哪个分支?换句话说,哪个分支将被下载到我的电脑?

Fork是GitHub端的克隆(它克隆了所有内容)。
当你克隆一个回购协议时,你得到的是该回购协议及其所有分支的全部历史记录


尽管理论上可以,但GitHub repo的克隆主要查找主分支。要更改GitHub克隆将获得的“默认”分支,您需要重命名主分支。

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


但是fork是GitHub到GitHub的操作;没有任何内容复制到您的PC。它与Git克隆不完全相同。如果您想问“当我克隆一个项目时复制了什么?”,请参阅手册。

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

如果从新制作的fork克隆到本地PC,PC上的
origin
remote将指向Github上fork的主分支。

这样想:

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

主回购协议的每个分支对应于出资人的工作。fork实际上是一个Github(不是Git)构造,用于在用户帐户中存储repo的克隆。作为克隆,它将包含生成fork时主repo中的所有分支

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

拉取请求(在GitHub生态系统中)对应于任务。每次我想向主回购贡献一个独立的已完成任务时,我都会创建一个与该任务中所做的提交相对应的请求。这些提交从myfork或my分支机构拉至主回购机构


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

如果您创建了一个项目,您就是在将整个项目复制到您的git hub帐户。你的电脑没有任何问题


要在你的电脑上复制,你必须克隆它并提取所有的东西,你将得到该项目的所有分支和代码,这可以很好地解释。您在GitHub有一个中央存储库。每当您在个人计算机上进行某些更改时,主存储库的本地克隆称为fork


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

我想分享一个使用分支机构和分叉机构的实际例子

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

假设我们的项目位于

https://github.com/yardpenalty/mainproject.git
分支用法:

假设该分支被称为
它无关紧要

一旦我们按照我们想要的生产方式拥有了分支机构,我们将最终推送到该分支机构,创建一个合并请求,然后进入UAT进行测试。一旦测试通过QC,更改将合并到生产中

来自
It\u无关紧要
分支的合并现在推送到主项目

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

假设包项目位于

https://github.com/yardpenalty/mypackage.git
请记住,mainproject在生产中使用这个包,因此我们不能通过简单地将它们推到这个包(以及其他原因)来进行更改。假设web开发人员必须编辑此包才能对生产进行更改

一个简单的分支也不能工作,因为如果不发布包等,我们就看不到我们的更改

叉子用法: 现在,我们必须对我们的包做一些小把戏,所以我们通过fork创建生产包的克隆。composer.json文件可以更新为指向现在位于用户或组路径的fork

因此,我们将在
https://github.com/yardpenalty/mypackage.git

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

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

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

]

那么,当我克隆分叉回购(有效地将其下载到我的电脑上)时,所有分支机构都在我的电脑上?但在一个分支中添加了额外的文件。那么我的电脑会不会有这些文件?@Jonathan:你的电脑会得到包含所有文件的所有分支。但是您的工作目录(您签出其中一个分支的空间)实际上是您查看这些文件的唯一空间。那么其他文件何时会存储在.git文件夹中?@Jonathan:作为松散或打包的对象,请参见(对象是blob(您的“文件”)、树、提交或标记:)根据Help.GitHub页面,创建
上游分支