繁体   English   中英

GitHub:我为什么要分叉?

[英]GitHub: Why should I fork?

我知道分叉是在服务器端克隆存储库。 但我不明白我为什么要这样做。

为什么不将原始存储库克隆到我的机器上,添加我的代码,而不是将新分支推送到 GitHub 并发出拉取请求?

我知道分叉是在服务器端克隆存储库 [...]

这差不多。 在 GitHub 上,fork 是其他一些 GitHub 存储库的副本,并引用了从中复制它的存储库。

在此处输入图像描述

备注:fork 的概念源于 GitHub; 不是一个 Git 概念。

[...] 但我不明白我为什么要这样做。 为什么不将原始存储库克隆到我的机器上,添加我的代码,然后将新分支推送到 GitHub 并发出拉取请求?

除非您对相关存储库具有写入权限,否则您不能简单地将任何内容推送到它; 服务器将拒绝您的推送,并显示错误消息

remote: Permission to bos/text.git denied to Jubobs.
fatal: unable to access 'https://github.com/bos/text/': The requested URL returned error: 403

这就是叉子发挥作用的地方。 通过 fork 别人的 repo,你得到一个你有写权限的副本,即你可以推送你的贡献。 整个工作流程是这样的:

  1. 确定 Alice 的存储库中可以改进的区域。
  2. 叉那个回购。
  3. 在本地机器上克隆你的 fork。
  4. 在该克隆中,进行更改、运行测试、创建提交(可能在新分支上)等。
  5. 或者,一旦您对 Alice 的代码的修改感到满意,让您的工作更美观:整理/压缩您的提交,编写尊重 Alice 回购风格的良好提交消息。 如果 Alice 在你 fork 她的 repo 后将更改推送到她的 repo,你可能还想将你的分支重新设置为 Alice 的分支。
  6. 推到你的叉子上。
  7. 向 Alice 发出拉取请求(主要是通知 Alice 查看您在她的 repo 的 fork 中所做的更改)并等待她进行审核。
  8. 向您的分支推送更多提交(并可能重新设置基准),直到 Alice 对您的工作感到满意。
  9. 如果一切顺利,Alice 会合并你的 pull request; 你的工作被集成到她的 GitHub 存储库中。 香槟酒! 你的工作没有白费。
  10. 如果您近期不打算为 Alice 的 repo 做出贡献,您可以安全地删除您的 fork,以节省 GitHub 服务器上的空间。 另一方面,如果您经常为 Alice 的 repo 做出贡献,请保留您的分叉并经常将其与 Alice 的 repo 同步。

来自 Github 文档

分叉是存储库的副本。 分叉存储库允许您在不影响原始项目的情况下自由试验更改。

最常见的是,分叉用于提出对他人项目的更改或使用他人的项目作为您自己想法的起点。

https://help.github.com/articles/fork-a-repo/

分叉清楚地表明您的存储库是从另一个存储库派生的,通过将您的存储库标记为“从...分叉”,更重要的是,它会将您的存储库列出在原始项目的分叉列表中。

这样做的好处之一是,如果原始项目在您仍在工作时停止运行,人们仍然可以在主存储库的分叉列表中找到您的存储库。

从 github 的角度来看,他们可以通过知道您和原始存储库之间的 git 对象相同并且可以共享来节省一些磁盘空间

此外,我认为您不能从不是原始存储库的分支的存储库中发出拉取请求。 至少我做不到,我不得不分叉,推到分叉,请求拉取请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM