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

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

是/否? 对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上下文中, Fork不会扩展Git。
它只允许在服务器端克隆。

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

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

另请参阅 “ Collaborative GitHub Workflow ”。

如果要保留与原始存储库(也称为上游)的链接,则需要添加引用该原始存储库的远程数据库。
请参阅“ GitHub上的源和上游有什么区别? ”

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


#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 ),你也有写权限。

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

Git叉子实际上是Git克隆吗?相关推荐

  1. Git服务器搭建及仓库克隆

    CentOS下Git的简单使用 CentOS下Git服务器的安装 这里将使用yum来进行Git服务器的安装,yum(全称为Yellow dog Updater,Modified)是一个在Fedora和 ...

  2. 搭建Git服务器及本机克隆提交

    前文 Git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首 ...

  3. 【Git】从远程库克隆

    文章目录 从远程克隆 小结 从远程克隆 上次我们讲了先有本地库,后有远程库的时候,如何关联远程库. 现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆. 首先,登陆GitHub, ...

  4. Git学习系列之Git基本操作克隆项目(图文详解)

    不多说,直接上干货! 想必,能进来看我写的这篇博文的朋友,肯定是了解过. 比如SVN的操作吧,最常见的是 检出(Check out ...), 更新 (Update ...), 以及 提交(Commi ...

  5. 微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码 | 极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 张红月 出品 | CSDN(ID:CSDNnews ...

  6. git的添加git add、更新git pull、删除git rm 、克隆git clone

    [把不同人写的几个的代码模块组合成整体(注意:模块使用的编程环境不同) 推荐使用git,git是目前世界上最先进的分布式版本控制] 一.安装.远程仓库的绑定 1.安装git 通过Git安装包进行安装, ...

  7. Git使用(Git安装、建立Git仓库、克隆Git仓库、提交代码至Git仓库)

    目录 1 Git安装 2 建立Git仓库 3 克隆Git仓库 3.1 新建Spring Boot项目 ​3.2 克隆Git仓库 4 提交代码至Git仓库 4.1 Pull ​4.2 Commit 4. ...

  8. 极客日报第84期:微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码

    一分钟速览新闻点! 微信Mac版更新:在电脑上刷朋友圈了 领英暂停中国境内新用户注册 或因内容和服务不合规 复旦自主研发显示织物:衣服也可充当显示器 IDC:预计2021年PC出货量将超3亿台 王兴: ...

  9. [转]Git详解之一 Git起步

    起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...

最新文章

  1. 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】
  2. 重磅风控干货:如何用数据分析监测交易欺诈
  3. 建议收藏!最新的(2019年)电子/计算机领域SCI期刊影响因子大全
  4. Spring MVC--使用Jackson返回JSON格式数据
  5. 计算器排html页面,htmltest~计算器界面的实现
  6. Amazon Seller Central is Temporarily Unavailable
  7. 绑定控件中%#Eval()%和%=变量%的执行顺序
  8. MTK 驱动开发(17)---LCD MIPI
  9. 度量分析之报告信息的四个层次:数据,信息,分析,措施
  10. 个人项目需求与分析——点菜系统App
  11. Dart基础第7篇:函数的定义 可选参数 默认参数 命名参数
  12. get_digits
  13. 计算机操作系统汤小丹版课后答案
  14. 本文来自合作伙伴“阿里聚安全”.
  15. visio连接线和框图不好控制总跑跳问题
  16. 一款免费的科研图表绘图工具——Veusz
  17. CTex listings宏包出错undefined control sequence,换成verbatim解决问题
  18. quoted string not properly terminated错误提示
  19. 在ArduPilot旋翼机上安装PX4Flow光流传感器
  20. 金额数字3位隔开php,PHP实现人民币数字格式化,每三位加逗号

热门文章

  1. Android String.xml 批量翻译工具 | Android string.xml 各国语言转换
  2. 一个例子看懂kotlin的集合和序列
  3. 学习JNI一些基础知识
  4. c++ opencv实现区域填充_使用OpenCV实现图像覆盖
  5. bzoj2396:神奇的矩阵
  6. python数据类型之内置方法
  7. Spring AOP概念理解 (通俗易懂)【转】
  8. Linux c基本知识整理
  9. android 自定义 styleable 属性
  10. 《书都不会读,你还想成功》