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