博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git叉子实际上是Git克隆吗?
阅读量:2288 次
发布时间:2019-05-09

本文共 2813 字,大约阅读时间需要 9 分钟。

我一直听到有人说他们在Git中提供代码。 Git“fork”听起来像Git“克隆”,还有一些(毫无意义的)放弃未来合并的心理意愿。 Git中没有fork命令,对吧?

通过将对应关系固定到它上来使叉子变得更加真实。 也就是说,您按下前叉按钮后,当您按下拉取请求按钮时,系统足够智能,可以通过电子邮件发送给所有者。 因此,它是围绕存储库所有权和权限的一点点舞蹈。

是/否? 对GitHub的任何焦虑都会向这个方向扩展Git? 或者Git吸收功能的任何谣言?


#1楼

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


#2楼

当您决定为某个项目做出贡献时,就会完成分叉。 您可以复制整个项目及其历史记录日志。 此副本完全在您的存储库中完成,一旦您进行了这些更改,您就会发出拉取请求。 现在它可以接受您的拉取请求并将更改合并到原始代码中。

Git clone是一个实际的命令,允许用户获取源的副本。 git clone [URL]这应该在您自己的本地存储库中创建[URL]的副本。


#3楼

除了克隆是从服务器到你的机器并且分叉在服务器本身上复制这一事实之外,一个重要的区别是当我们克隆时,我们实际上得到了所有的分支,标签等。

但是当我们fork时,我们实际上只获取master分支中的当前文件,除此之外。 这意味着我们没有得到其他分支机构等。

因此,如果您必须将某些内容合并回原始存储库,那么它是一个存储库间合并,肯定需要更高的权限。

Fork不是Git中的命令; 它只是GitHub实现的一个概念。 记住Git被设计为在点对点环境中工作,而不需要与任何主副本同步。 服务器只是另一个对等体,但我们将其视为主副本。


#4楼

关于什么是“叉子”,这里存在误解。 事实上,fork只不过是一组每用户分支。 当您推送到fork时,您实际上会推送到原始存储库,因为这是唯一的存储库。

您可以通过推送到fork,注意提交然后转到原始存储库并使用提交ID来尝试此操作,您将看到提交“在”原始存储库中。

这很有意义,但它远非显而易见(我最近偶然发现了这一点)。

当John分析存储库SuperProject时,实际发生的事情是源存储库中的所有分支都使用“John.master”,“John.new_gui_project”等名称进行复制。

GitHub“隐藏”了“约翰”。 从我们这里得到的幻觉我们在GitHub上有我们自己的“副本”存储库,但是我们没有,甚至不需要。

所以我的fork的分支“master”实际上被命名为“Korporal.master”,但GitHub UI从未显示出这一点,只显示“master”。

根据我最近一直在做的事情以及当你思考它时,这是我认为在引擎盖下发生的事情,这是非常好的设计。

出于这个原因,我认为微软很容易在他们的Visual Studio Team Services产品中实现Git forks。


#5楼

简单来说,

当您说要分配存储库时,您基本上是在GitHub帐户中的GitHub ID下创建原始存储库的副本。

当您说您正在克隆存储库时,您将直接在系统(PC /笔记本电脑)中创建原始存储库的本地副本,而无需在GitHub帐户中创建副本。


#6楼

在这种情况下,“Fork”意味着“复制他们的代码,以便我可以添加自己的修改”。 没有什么可说的了。 每个克隆本质上都是一个fork,它由原来决定是否从fork中提取更改。


#7楼

克隆涉及将git存储库的副本制作到本地计算机,而分叉则将存储库克隆到另一个存储库。 克隆仅供个人使用(尽管可能会出现未来的合并),但是在分叉的情况下,您正在复制并打开一个新的可能的项目路径


#8楼

在GitHub上下文中, 不会扩展Git。

它只允许在服务器端克隆。

在本地工作站上克隆GitHub存储库时,除非明确声明为“贡献者”,否则无法返回上游存储库。 那是因为你的克隆是该项目的一个单独的实例。 如果您想为项目做出贡献,可以通过以下方式使用分叉来执行此操作:

  • 克隆你的GitHub帐户上的GitHub存储库(即 ,服务器端的克隆)
  • 贡献对GitHub存储库的提交(它在你自己的GitHub帐户中,所以你有权利推送它)
  • 将任何有趣的贡献发送回原始的GitHub存储库(即通过您在自己的GitHub存储库上所做的更改的

另请 “ ”。

如果要保留与原始存储库(也称为上游)的链接,则需要添加引用该原始存储库的远程数据库。

请参阅“ ”

叉和上游

使用Git 2.20(2018年第四季度)以及更多, 更有效率。


#9楼

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

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

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

你正在谈论的那种分支,一个单独的一方获取代码的完整副本并走开,必然发生在VCS之类的集中式系统中,如Subversion。 像Git这样的分布式VCS可以更好地支持分支整个代码库并有效地启动新项目。

Git(不是GitHub)本身支持以几种方式“分叉”整个回购(即克隆它):

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

Git将更改贡献给fork的源代码就像要求原始项目中的某些人从您那里获取,或者请求写访问权来自行推送更改一样简单。 这是GitHub更容易和标准化的部分。

对Github的任何焦虑都会向这个方向扩展git? 或者任何关于git吸收功能的谣言?

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


#10楼

是的,fork是一个克隆。 它的出现是因为, 未经他们的许可你不能将他人的副本推送给他人 。 他们为你制作了一份副本fork ),你也有写权限。

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

转载地址:http://itdnb.baihongyu.com/

你可能感兴趣的文章
MySQL使用explain检查索引执行计划
查看>>
MySQL字符集
查看>>
MySQL存储引擎
查看>>
MySQL主从同步
查看>>
MySQL半同步复制
查看>>
MySQL主库宕机从库提权
查看>>
MySQL主主模式
查看>>
MySQL错误代码
查看>>
MySQL binlog的三种模式
查看>>
MySQL利用binlog增量恢复数据库
查看>>
Tomcat多实例多应用
查看>>
Tomcat启动慢解决方法
查看>>
Tomca主配置文件详解
查看>>
Tomcat创建虚拟主机
查看>>
Tomcat集群
查看>>
Tomcat DeltaManager集群共享session
查看>>
Tomcat连接Apache之mod_proxy模块
查看>>
sersync+rsync数据同步
查看>>
使用com.aspose.words将word模板转为PDF文件时乱码解决方法
查看>>
Linux发送邮件
查看>>