为什么要“在GitHub上分叉我”?[关闭]


50

我了解GitHub的工作原理,但令我感到困惑的是,为什么最近几乎每个OSS项目的主页上都有一个“在GitHub上叉我”链接。例如,

http://jqtjs.com/http://www.daviddurman.com/flexi-color-picker/,等等。

为什么这么常见?他们是否想要/需要代码验证,检查他们可能不知道怎么做的安全性/性能改进?

是否表明这是一个协作项目-欢迎您进行改进?

他们是在GitHub工作还是想推广他们的服务?奇怪的是,我认为我最近没有看到“ Bitbucket上的Fork项目”徽标。

我对该徽标的第一个反应是,可能需要对该项目进行修改(分叉),以便将其与任何有用的功能集成在一起;或者,他们鼓励零散的代码库,鼓励每个人自己创建项目。但是我不认为这是意图。


23
因为它比编写“如果您想为这个项目做出贡献或查看源代码,请查看我们位于github的存储库”要容易得多。;-)
nietonfir

1
我有点惊讶,没有人提到...这是什么,双关语?影射?但是,特定的措辞不适用于bitbucket;他们的网站散发出比github更专业的氛围。因为这就是我一读就理解你的问题的原因-“为什么bitbucket没有这些?”
2013年

2
它们是社交小部件,就像在SE问题/答案上带有“共享”链接的那些小部件一样:您可以获得Google +,Facebook和Twitter的小部件。它们可供站点设计人员使用,因此易于集成。我认为Bitbucket这样的东西是没有的,所以没有什么要注意的:如果任何项目都有自己的,自家制的“ fork me”小部件,那么它们看起来可能不会像其他任何项目。
吕克·丹顿

我投票结束这个题为离题的问题,因为它与开源软件文化有关。当前,有关社区如何共同协作以生产,分发,销售以及有时通过开源项目货币化的问题在开源堆栈交易所上热门话题
Thomas Owens

Answers:


20

除了问题的促进协作方面,从业务角度来看,它将增强和加强GitHub的流量,用户群和市场地位。因此,也有一些与之相关的业务策略。

我个人对此并不介意,因为GitHub为开源社区提供了宝贵的服务。


23
为什么从GitHub的角度来回答?人们不会在站点上放置该徽标来增强GitHub的流量,用户群和市场地位。那可能是副作用,但这不是目的。这是GitHub的“业务策略”如何?GitHub甚至不负责在OSS站点上放置此徽标(OSS站点维护者负责)。
李·李

3
@Ben Lee您的意见被采纳。但是我要断言,目的不是一个,而是目的很多。我并没有否认旨在促进协作的观点,只是我们还必须承认GitHub也是一家企业(可以说他们是该行业的市场领导者),并且Fork Me的另一个目的是GitHub是为了战略优势。当然,这是自愿的,但仍然有效。它使GitHub在互联网上更加可见,这是任何互联网业务战略的关键部分。
AsymLabs

2
@BenLee像dmitri指出的那样,Github拥有以下页面:github.com/blog/273-github-ribbons Bitbucket或任何其他服务是否有类似的东西?
NoBugs

75

是否表明这是一个协作项目-欢迎您进行改进?

是的:您无权直接在其存储库中推送提交。
但是您确实可以分叉他们的存储库,使其成为您的存储库,然后从那里推送提交,准备拉取请求

叉子


2
我知道您可以分叉,然后在Github上请求,我的问题是为什么他们说“在Github上分叉我”?
2013年

6
@NoBugs确保您知道如何回馈他们的项目。
VonC

19
我认为,这里的重点更多地放在“叉我”而不是Github上。可能只是因为Github是此类网站中最受欢迎的网站。如果您使用Bitbucket,我认为没有人会遇到大问题。反正是个好问题。
JensG 2013年

如果您在gitorious.org分叉,我也不认为有人会遇到大问题。几乎没有人
这么做

37

“ Fork me on Github”徽章旨在表明该项目是您有权为该项目做出贡献或将其用作自己项目的起点的权利。

它有点表明“这是一个协作项目,欢迎您添加改进。”

它使您可以在不影响原始源代码的情况下使用代码或剥离同一项目。

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

相同的原则适用于所有其他git主机。

授予分叉项目权利的主要要点是:

  • 促进协作-通过允许人们共同努力改善项目。
  • 增加知识-通过允许人们学习您的代码。

您可能遇到的一些项目可能是由Github员工根据自己的私人需求而设计的。他们不想推广github。您可以在github上找到项目:https : //github.com/github

至于为什么看不到其他主机的徽章,是因为Github是最受欢迎的git托管和协作平台。


究竟。DVCS工作流程意味着我可以发布结果而不会影响其他结果。派生意味着不必征得共享任何想要共享的内容的许可。如果互联网喜欢您的更改,他们将吸收它们。
沃伦·P

15

想象一下,您使用了自己喜欢的文本编辑器,经过一段时间后,您发现您真的很喜欢要实现的某些功能(例如非阻塞保存文件选项)。

在考虑了第十一次之后,您决定自己编写一个。找到该项目的github页面后,您有两个选择:

  1. 下载源代码,对其进行修改并保存起来。
  2. 将项目分叉在github上,然后使用分叉进行工作。

如果选择第二个选项,则在对功能进行了良好的编写和测试之后,可以准备请求请求,然后整个项目将从中受益。

但是,如果您选择了第一个路径,则很有可能您只会忘记所做的修改,而没有人会从中受益(是的,您可以手动共享代码,但是其他一些编码人员可能会轻易忘记这一点。)迫使您与他人的工作更加社交化)。

说“在github上叉我”项目的所有者只是想确保您选择了Fork on github下载代码并将其发布到您的主目录中。


7

仅在这里表明这是一个开源项目,无论出于何种原因,都可以将其分叉。另外,在GitHub上查看此博客文章:https : //github.com/blog/273-github-ribbons

更新:我个人添加了这些GitHub功能区,以便人们可以在GitHub上找到我并为我的项目加注星标;)



5

Github试图扩大他们的用户基础,以包括任何协作工作,而不仅仅是源代码托管;因此他们会推叉并发送拉取请求方法。制作补丁程序并通过电子邮件发送补丁程序对程序员和其他大多数人来说都没有吸引力。推送权限在这里并不是很重要,因为最终大多数对工具和开发工作流程有相当了解的git(或mercurial,darcs或其他对象)用户都可以通过某种方式发送带有补丁的电子邮件。

此外,Github不仅仅是代码托管,还更涉及社交网络:您的个人资料,存储库和更改构成了您作为软件开发人员的身份,就像您的推文和“ +1”一样。所有这些功能区和按钮等均用作自我画布的一种方式,是指向项目所属人员的个人资料的路径。如今,拥有不错的Github配置文件是开发人员的第一件事。即使我将Mercural用于任何用途,由于这些原因,我还是通过hg-git推送到Github。

最终,“ Fork me on Github”功能区与“ Tweet本文”或“在G +上共享此内容”按钮的目的稍有不同。(在存储库列表上还有一个存储库的分支意味着“我是这件事的用户”,即使Linus Torvalds不接受请求请求,github上也有成千上万的Linux分支。)


2

这是说“欢迎补丁”的另一种方式。

人们可以发送拉取请求,而不是发送愿望和功能请求,原始作者在其中审阅,验证和合并拉取请求。

从历史上看,分叉是由小组进行的具有敌意的行为,与原始项目的管理存在冲突。例如,Sun的OpenOffice曾经拒绝使用快速C / C ++ SVG插件,因为出于政治原因,它倾向于使用自己的缓慢中断的基于Java的插件。

在大多数情况下,分叉是不好的,并且由嫉妒的人或自私的公司携带,他们的计划与原始社区没有共享并且与原始社区不符(例如Canonical),因此示例是libav / avconv (这是FFMPEG的分支),在这种情况下,原始社区具有更高的质量和安全性,并且他们欢迎与社区计划保持一致的补丁。

Dan Walsh注意到了fork的旧定义

我使用开源已有很长时间了,我对“ fork”的定义可能会过时。我认为“分叉”是一个团体采取的敌对行动,目的是使其他团体使用并贡献其上游项目的版本,而忽略“原始”版本。例如,LibreOffice从OpenOffice分叉,或者回溯到Xorg从Xfree86分叉。

然后他将其与github的fork进行了比较

如今,GitHub已经改变了含义。当GitHub或类似平台上存在软件存储库时,每个想要贡献的人都必须点击“ fork”按钮,并开始构建其补丁程序。截至撰写本文时,GitHub上的Docker有9,860个分支,包括我们的分支。但是,根据此定义,发行版中随附的所有包含补丁程序的软件包都是fork。Red Hat附带了Linux内核,但我还没有听说过这被称为fork。但是,如果您考虑任何附带补丁的上游项目,则将其视为“叉子”。


1

所有说这是协作的答复都提出了一个问题:为什么不说“ 在GitHib上克隆我”或“从GitHub下载.zip”?

在GitHub上,您可以看到分叉数的计数。但是,据我所知,没有计算克隆或zip下载的数量。

因此,我想说这部分是鼓励协作,部分是为了获得人们正在使用您的代码的反馈和验证。

PS我对GitHub来说还很陌生,所以如果这完全是错的,请告诉我。


只是说“这就是分布式版本控制的工作原理,通过请求请求,这是否简单得多?当然,这需要我首先派生您的存储库,然后提交给我的派生,然后如果我构建了值得共享的东西,则发出请求请求原始项目”
Warren P

1
必须承认我真的没有“得到” git。为什么不只是克隆或获取zip文件,如果进行更改,就设置我想要的任何VCS?在极少数情况下,我会做出有益于所有人的有益变化,我可以求助于电子邮件,或者先进行分叉。
user949300 2014年

这个答案是自相矛盾的。您正确地建议他们尝试鼓励合作。这种链接的目的不是要给人们一个下载项目的空间,而是要让他们参与开发项目。如果他们只是想要自己的副本,他们可以下载zip或克隆它,但是如果他们希望自己的副本具有一条建立路径以回溯到上游项目的方式,则可以通过使用fork来完成,上游可以将您的文稿拉进来从。
Caleb 2014年

@ user949300,您仍然可以使用git clone https://github.com/$NAME_OF_GITHUB_USER/$NAME_OF_REPOSITORY.git,然后git format-patch master通过电子邮件或类似方式发送
Sebastian Godelet 2014年

0

在github上进行分叉使说起来像在Twitter上关注我真的很容易。我从自己的角度将社会化带入了发展世界,这也很明显是开源的并且可以修改。我也认为这是一个不错的概念,在您的一端带有“ fork me on github”横幅项目网站


嗯 不会。为此,回购有“星级”和“观察”,用户有“关注”。分叉的目的是鼓励采取一种特定的行动-向上游捐款-不仅要使其具有社会意义。
Caleb

0

您可能最好只采取最简单的答案:他们希望您知道该代码可在GitHub上免费获得。我认为您的假设有些过高。


这是实际上最简单的答案。
Woland
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.