我想知道做一个项目的Fork和做一个克隆之间的区别。
如果我已经分叉了一个项目,我只能通过GitHub发送拉请求吗?
我想知道做一个项目的Fork和做一个克隆之间的区别。
如果我已经分叉了一个项目,我只能通过GitHub发送拉请求吗?
基本上,是的。fork只是请求GitHub克隆项目,并在你的用户名下注册它;GitHub还跟踪两个存储库之间的关系,因此您可以可视化两个项目(以及其他分支)之间的提交和提取。
即使您不使用fork,您仍然可以请求人们从您克隆的存储库中提取,但您必须自己处理使其公开可用的问题。或者向开发人员发送补丁(参见git format-patch),他们可以应用到他们的树。
克隆是在存储库的两个(可能不同的)版本之间进行适当的复制和分离。当一个repo被修改时,必须使用push命令将新内容主动复制到另一个repo。而另一个回购的变化。
当你在服务器上fork一个repo时,不需要复制内容,因为两个repo将使用来自同一服务器的相同[固定对象]内容。“诀窍”在于管理不同的用户观点,以便每个用户都相信他们拥有完整的个人回购副本。在fork之间的push和fetch只是更新用户的指针。
在较低的级别上,git在内部做同样的事情。如果你有三个不同的文件,每个文件都包含Hello World,那么git简单地“fork”它的Hello World blob的单一副本,并根据需要在三个地方提供它。
在服务器上分叉的能力意味着Github的大存储额度平均来说并不是那么大,因为每个人都共享一个单一的底层回购。
When you say you are Forking a repository you are basically creating a copy of the repository under your GitHub ID. The main point to note here is that any changes made to the original repository will be reflected back to your forked repositories(you need to fetch and rebase). However, if you make any changes to your forked repository you will have to explicitly create a pull request to the original repository. If your pull request is approved by the administrator of the original repository, then your changes will be committed/merged with the existing original code-base. Until then, your changes will be reflected only in the copy you forked.
简而言之:
Fork & Pull模型允许任何人对现有的存储库进行分叉,并将更改推到他们自己的分叉,而不需要对源存储库授予访问权限。然后,项目维护者必须将更改拉入源存储库。
请注意,在fork之后,您可以在您的机器上本地克隆您的存储库(在您的名称下的存储库)。对其进行更改并将其推送到您的分叉存储库。但是,为了在原始存储库中反映您的更改,您的pull请求必须得到批准。
还有一些有趣的讨论
git的分叉实际上是git的克隆吗?
我如何更新一个GitHub分叉库?
fork项目在您的在线存储库(回购)。 克隆的项目在您的本地机器上(我通常在fork回购后克隆)。
你可以提交你的在线回购(或提交你的本地回购,然后推送到你的在线回购),然后发送拉请求。
项目经理可以在他的主要在线版本中接受您的更改。
简而言之,分叉可能与“在你的GitHub ID/配置文件下克隆”相同。显然,除了少数例外,任何时候分叉都比克隆好。与克隆存储库不同,fork存储库始终与原始存储库进行监视/比较。这使您能够跟踪更改,发起拉请求,并手动将原始存储库中的更改与您的分叉存储库同步。
如果你做了提问者暗示的事情(忘记了fork,只是在本地克隆了一个回购,做了更改,现在需要发出一个拉请求),你可以回到正轨:
Fork你想要发送拉取请求的回购 将本地更改推到遥控器 发出拉请求
GitHub上另一个奇怪的微妙区别是,对fork的更改不会计算在你的活动日志中,直到你的更改被拉到原始的回购中。更重要的是,要把一个分叉变成一个合适的克隆,你必须联系Github支持,显然。
摘自:为什么我的贡献没有出现:
Commit was made in a fork Commits made in a fork will not count toward your contributions. To make them count, you must do one of the following: Open a pull request to have your changes merged into the parent repository. To detach the fork and turn it into a standalone repository on GitHub, contact GitHub Support. If the fork has forks of its own, let support know if the forks should move with your repository into a new network or remain in the current network. For more information, see "About forks."
@AniketThakur的回答很好。下面这个问题还没有人回答。
如果我已经分叉了一个项目,我只能通过GitHub发送拉请求吗?
不。如果您是存储库的贡献者,您可以:制作本地克隆。创建本地分支。向该分支添加提交。将本地分支推回github(在此过程中创建远程分支)。创建一个pull请求,请求将该分支合并到主分支(或任何您喜欢的分支)中。