本文共 1575 字,大约阅读时间需要 5 分钟。
clone fork 区别
最近有关《黑客新闻》的头条引起了轰动( ):
标题Google分叉了Swift ,它既准确又令人困惑。 为什么引起这么大的骚动? 因为在自由和开源软件中,“ fork”一词具有两个含义。 让我们进一步深入研究。
在免费和开源软件中存在的概念已有几十年了。 “派生”意味着获取项目的副本,将其重命名,然后围绕该副本启动一个新项目和社区。 那些分叉项目的人很少(如果有的话)再次为父项目做出贡献。 这相当于的软件 代码库中有两条路径分叉,而我走的却少了一条……这一切都与众不同。
项目分支可能有很多原因。 也许该项目已经休整了一段时间,并且有人想复兴它。 可能已经收购了承担该项目的公司,并且社区担心新的母公司可能会关闭该项目。 也许社区内部存在分裂,一部分社区已决定对该项目采取不同的方向。 通常,项目分叉会伴随大量讨论,并可能还会引起社区冲突。 无论出于何种原因,项目分支都是复制项目,目的是围绕它创建一个新的独立社区。 尽管前叉确实需要进行一些技术工作,但这主要是一种社会行为。
在自由和开源软件的整个历史中,有很多分支。 一些较出名的是从分叉 , 从分叉和从分叉 。
在“过去的日子”中,我们当中那些想要在代码库中工作的人会启动我们的或并代码以在沙箱中创建工作副本。
然后到达了现场( 也是如此,但是在本期中并没有直接涉及)。 作为 ,您不再需要“检出”主存储库的工作副本。 相反,存储库的每个副本本身可以是某人的主要副本。 要在DVCS中工作,您仍然必须获取代码的副本,但是该复制的代码与原始代码一样有效,并且有可能成为原始代码。 因此,您必须克隆它,而不是对代码进行校验 。 就像在或任何其他出色的科幻电影中一样,该克隆与原始来源相同,并且有可能成为主要存储库,尽管这种情况很少发生(在FOSS中,如果不是在科幻电影中)。
如果您希望为使用git
作为其版本控制系统的项目做出贡献,则需要为其创建一个副本。 例如,要贡献给存储库,您首先要使用以下git命令创建一个克隆:
git clone https://github.com/vmbrasseur/Public_Speaking.git
这将创建存储库的本地克隆,您可以根据需要进行任何更改。 如果您希望将更改贡献回原始存储库,则必须发送 。 除非原始存储库的维护者直接授予您对其的访问权限,否则,如果没有该存储库的克隆和对该存储库的拉取请求,就无法为该存储库做出贡献。
与分叉不同,克隆是技术操作 ,不需要社区参与或任何社会变革。
自由和开源软件从来没有像现在这样简单,因此自然而然地使整个过程变得复杂。
当于2008年启动时,它选择了fork来代表git clone
命令的动作。 当你在GitHub上fork一个项目,你实际上只是创造它,一个克隆副本上,您可以执行你的工作。 这是完全可能的,从这里你可以选择到餐桌的项目在原来的意义:创建一个单独的项目以及相关的社区,而不是简单地发送引入请求回原来的项目。 但是,几乎所有派生 GitHub项目的人都只打算创建个人工作副本,即clone 。 fork这个单词的重载在自由和开源软件社区中引起了更多的混乱,最近造成了Google可能以Swift编程语言(本来意义上)分叉的恐惧(暗示它正在创建一种Swift语言)。新项目和独立项目),而不是实际执行的工作:克隆该项目,以便为项目做出贡献,就像任何优秀的自由和开源公民一样。
( ( )
因此您会看到,通常您的叉子是一个克隆,但有时它是一个叉子。 这完全取决于您是向原始社区(克隆)做出贡献,还是试图形成一个新的社区(分支)……或者如果您使用的是GitHub,在这种情况下,您的fork是克隆,反之亦然。
翻译自:
clone fork 区别
转载地址:http://hrszd.baihongyu.com/