Answers:
GitHub上的所有分支都将被复制到fork中。(显然,这不包括一开始从未被推送到GitHub的分支。)
但是fork是GitHub到GitHub的操作;什么都不会复制到您的PC。它与Git 克隆并不完全相同。如果您想问“克隆项目时复制了什么?”,请参阅手册git-clone(1)
。
这样想:
仓库对应于团队在一个或多个分支机构中的协作工作。所有贡献者都有自己的副本。
主仓库的每个分支都对应于贡献者的工作。fork实际上是一个Github(不是Git)构造,用于在您的用户帐户中存储仓库的副本。作为一个克隆,它将在您创建fork时包含主仓库中的所有分支。
分支和/或主仓库中的每个分支都可以对应多种事物,具体取决于您的工作方式。每个分支都可以引用项目的一个版本,但也可以对应于不同的开发渠道,例如修补程序或实验性工作。
该拉请求(在GitHub的生态系统)对应的任务。每当我想为主仓库提供一个隔离的完成任务时,我都会创建一个与该任务中的提交相对应的拉取请求。这些提交从我的fork或我的分支拉至主仓库。
甲提交是一组改变到代码。这是有关Git的最有趣的事情之一。您不传输文件,而是传输更改日志。
Fork是GitHub方面的一个克隆(它将克隆所有内容)。
克隆存储库时,将获得该存储库的所有历史记录及其所有分支。
即使理论上您可以更改远程存储库的默认分支,但来自GitHub存储库的克隆仍主要查找master分支。这意味着要更改GitHub克隆将获得的“默认”分支,您需要重命名master分支。
如果您从Github网站创建项目的分支,则会从上游项目获得所有分支。
如果从新铸造的分支克隆到本地PC,PC上的origin
遥控器将指向Github上的分支的主分支。
upstream
分支是您必须要做的;他们告诉您如何做。
这可以很好地解释。您在GitHub上有一个中央存储库。每当您在个人计算机上对其进行克隆以进行某些更改时,主存储库的此本地克隆称为分叉。
分支是不同的,包含在fork / repo中。实际上,分支机构是您处于不同开发阶段的工作。它们是在需要时创建的,以保存一组功能,授予不同用户访问权限,向客户端演示站点等。
我想分享一个现实的例子,当我们使用分支和何时使用Forks
我们的车间有GitLab,有时我们需要处理Laravel项目中的软件包。通常,当创建实际的Laravel项目时,我们会创建一个分支并将更改推送到我们在本地VM开发环境中已经测试过的分支。
假设我们的项目位于
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创建生产程序包的副本。可以将composer.json文件更新为指向现在位于用户或组路径中的fork。
因此,我们将在其中创建一个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"
}
]