我一直听到有人说他们在Git中分叉代码。Git“fork”听起来很可疑,就像Git“clone”加上放弃未来合并的心理意愿(毫无意义)。Git中没有fork命令,对吧?

GitHub通过将通信钉在分叉上,让分叉变得更加真实。也就是说,你按下分叉按钮,然后,当你按下拉请求按钮时,系统足够智能,可以给所有者发送电子邮件。因此,这有点像是围绕存储库所有权和权限跳舞。

是/否?对GitHub向这个方向扩展Git有什么担忧吗?或者有传言说Git吸收了这个功能?


当前回答

我认为fork是其他存储库的副本,但有您的帐户修改。例如,如果您直接在本地克隆其他存储库,则远程对象源仍然使用您克隆的帐户。你不能提交和贡献你的代码。它只是代码的纯拷贝。否则,如果您分叉了一个存储库,它将通过更新github帐户中的帐户设置来克隆回购。然后在您的帐户上下文中克隆回购,您可以提交代码。

其他回答

我一直听到有人说他们在用git分叉代码。Git“fork”听起来像Git“clone”,加上放弃未来合并的心理意愿(毫无意义)。git中没有fork命令,对吗?

“分叉”是一个概念,不是任何版本控制系统都特别支持的命令。

最简单的分叉与分支同义。每次创建分支时,无论VCS如何,都会“分叉”。这些分叉通常很容易合并在一起。

你所说的那种分叉,即一个单独的一方获取代码的完整副本并走开,必然发生在VCS之外的Subversion这样的集中式系统中。像Git这样的分布式VCS对分叉整个代码库和有效启动新项目有更好的支持。

Git(而不是GitHub)本机支持以两种方式“分叉”整个repo(即克隆它):

克隆时,将为您创建一个名为origin的远程默认情况下,克隆中的所有分支都将跟踪其原始分支从您派生的原始项目中获取和合并更改非常简单

Git使得将更改返回到fork的源代码变得简单,就像请求原始项目中的某个人从您那里提取,或者请求写访问权限将更改推回到您自己。这是GitHub使之更容易和标准化的部分。

Github向这个方向扩展git有什么焦虑吗?或者有传言说git吸收了这个功能?

没有焦虑,因为你的假设是错误的。GitHub通过一个漂亮的GUI和一种标准化的拉请求发出方式“扩展”了Git的分叉功能,但它并没有将该功能添加到Git中。完全回购分叉的概念在基本层面上直接融入到分布式版本控制中。你可以随时放弃GitHub,继续推/拉你“分叉”的项目。

克隆涉及将git存储库复制到本地计算机,而分叉则是将存储库克隆到另一个存储库。克隆仅供个人使用(尽管将来可能会发生合并),但通过分叉,您可以复制并打开一个新的可能的项目路径

在此上下文中,“Fork”的意思是“复制他们的代码,以便我可以添加自己的修改”。没什么好说的。每一个克隆本质上都是一个分叉,由原始人决定是否从分叉中提取更改。

简单地说,

当你说你正在分叉一个存储库时,你基本上是在GitHub帐户中的GitHub ID下创建一个原始存储库的副本。

and

当你说要克隆一个存储库时,你是在你的系统(PC/笔记本电脑)中直接创建原始存储库的本地副本,而GitHub帐户中没有副本。

是的,fork是一个克隆。它的出现是因为,未经他人允许,你不能推送他人的副本。他们会为你制作一份副本(fork),在那里你也会有写作权限。

将来,如果实际所有者或其他用户使用类似于您的更改的叉,他们可以将其拉回到自己的存储库中。或者,您可以向他们发送“拉取请求”。