Forking和克隆在GitHub上有什么区别?

我想知道做一个项目的分叉和做一个clone之间的区别。

我只能通过GitHub发送拉请求,如果我分叉了一个项目?


基本上,是的。 fork只是GitHub克隆项目并将其注册在您的用户名下的请求 ; GitHub还会跟踪两个存储库之间的关系,因此您可以可视化两个项目(和其他分支)之间的提交和拉取。

即使您不使用fork ,您仍然可以请求从您的克隆存储库中取出数据 - 但您必须自己处理公开的数据。 或者发送开发者补丁(参见git format-patch ),他们可以将这些git format-patch应用到他们的树上。


当你说你在分拣一个仓库时,你基本上是在你的GitHub ID下创建一个仓库的副本。 这里需要注意的是,对原始存储库所做的任何更改都会反映回您的分叉存储库(您需要获取并重新绑定)。 但是,如果您对分叉存储库进行了任何更改,则必须显式创建对原始存储库的拉取请求。 如果您的拉取请求得到原始存储库管理员的批准,那么您的更改将与现有的原始代码库一起提交/合并。 在此之前,您的更改只会反映在您分叉的副本中。

简而言之:

叉和拉模型允许任何人分叉现有的存储库,并将更改推送到他们的个人分支,而无需授予源存储库的访问权限。 必须由项目维护人员将这些更改拖入源代码库。

请注意,分叉之后,您可以在本地机器上克隆存储库(名称中的一个)。 对其进行更改并将其推送到您的分叉存储库。 但是,为了反映您在原始存储库中所做的更改,您的拉取请求必须获得批准。

其他有趣的话题 -

git叉子是否是git克隆?

我如何更新GitHub分叉库?


克隆是一个存储库的两个(可能不同)版本之间进行适当的重复和分离的地方。 当修改一个回购时,必须使用推送命令将新内容主动复制到其他回购。 其他回购中的更改被提取。

当您在服务器上分叉repo时,不需要重复内容,因为这两个repos将使用来自同一服务器的相同[固定对象]内容。 '诀窍'在于管理不同的用户观点,以便每个用户都相信他们拥有完整的回购副本。 在叉子之间推送和提取只是更新用户的指针。

在较低的层面上,git在内部执行相同的操作。 如果你有三个不同的文件,每个文件都包含Hello World ,那么git只是'分叉'它的Hello World blob的单个副本,并根据需要在三个地方分别提供它。

分叉服务器的能力意味着Github的大容量存储容量并不是那么大,因为每个机构都共享一个底层回购。

链接地址: http://www.djcxy.com/p/7847.html

上一篇: What is the difference between Forking and Cloning on GitHub?

下一篇: How do I clone into a non