当前位置:  开发笔记 > 运维 > 正文

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

如何解决《在GitHub上分叉和克隆有什么区别?》经验,为你挑选了5个好方法。

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

如果我分叉项目,我是否只能通过GitHub发送拉取请求?



1> Aniket Thaku..:

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

简而言之:

Fork&Pull模型允许任何人分叉现有存储库并将更改推送到其个人分支,而无需访问源存储库.然后,必须由项目维护者将更改提取到源存储库中.

请注意,在分叉后,您可以在计算机上本地克隆您的存储库(您名下的存储库).对其进行更改并将其推送到分叉存储库.但是,要反映您在原始存储库中的更改,您的提取请求必须获得批准.

几个其他有趣的dicussions -

git forks实际上是git克隆吗?

如何更新GitHub分叉存储库?


"这里要注意的要点是,对原始存储库所做的任何更改都将反映到您的分叉存储库中." 我觉得这有点误导.AFAIK,fork之后对原始存储库所做的更改_not_会自动反映在fork中; 你必须手动移动这些更改.发生在_叉之前发生的更改会在您单击fork按钮时复制到新的fork.

2> michel-slm..:

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

您仍然可以请求人们从您的克隆存储库中提取,即使您不使用fork- 但您必须自己处理将其公开发布的问题.或者发送开发人员补丁(请参阅git format-patch),他们可以将这些补丁应用于他们的树


Forks比克隆需要更多的工作来更新.可以使用简单的`git pull`更新克隆.fork需要多个命令.并不奇怪,我看到的几乎所有叉子都是过时的.Forks就像类固醇上的Maven存储库问题.而不是一个过时的回购(Maven),有成千上万的(Git).

3> Alisa..:

分叉项目在您的在线存储库(repo)上.

克隆项目在您的本地计算机上(我通常在分配回购后克隆).

您可以提交您的在线仓库(或在您的本地仓库上提交,然后推送到您的在线仓库),然后发送拉取请求.

项目经理可以接受它以获得他的主要在线版本的更改.



4> Philip Oakle..:

克隆是您正确复制的地方,以及存储库的两个(可能是不同的)版本之间的分离.修改一个repo时,必须使用push命令将新内容主动复制到另一个repo.并且其他回购的变化取而代之.

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

在较低级别,git在内部做同样的事情.如果你有三个不同的文件,每个文件都包含Hello World,那么git只是'分叉'它的Hello World blob的单个副本,并根据需要在三个地方的每一个中提供它.

能够在服务器上进行分叉意味着Github的大容量存储容量平均不大,因为每个机构共享一个单独的底层存储库.



5> 小智..:

简而言之,Forking可能与"在您的GitHub ID /配置文件下克隆"相同.叉子在任何时候都比克隆好,但有一些例外,显然.与克隆的存储库不同,分叉存储库始终与原始存储库进行监视/比较.这使您可以跟踪更改,启动拉取请求,还可以手动将原始存储库中所做的更改与分叉更改.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有