商汇粹外网资源平台

搜索
查看: 2147|回复: 4

GitHub 的 Fork 是什么意思?

[复制链接]

该用户从未签到

13

主题

120

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2022-9-22 06:08:19 | 显示全部楼层 |阅读模式
简单的说明:
GitHub中Fork 是 服务端的代码仓库克隆(即 新克隆出来的代码仓库在远程服务端),包含了原来的仓库(即upstream repository,上游仓库)所有内容,如分支、Tag、提交。代码托管服务(如Github、BitBucket)都提供了方便完成Fork操作的功能(在仓库页面点一下Fork按钮)。
这样有了一个你自己的 可以自由提交的远程仓库,然后可以通过的 Pull Request 把你的提交贡献回 原仓库。而对于原仓库Owner来说,鼓励别人Fork他的仓库,通过Pull Request 能给他的仓库做贡献,也是提升了原仓库的知名度
要更多地了解GitHub的Fork ,可以参见本人的中文译文:
1.《Forking工作流》 github.com/oldratlee/translations/git-workflows-and-tutorials/workflow-forking.md

2. 以及《Pull Request工作流》oldratlee/translations/git-workflows-and-tutorials/pull-request.md

3. 各个相关的典型工作流的体系综述 参见:《Git工作流指南》  



--- 分 --- 割 --- 线 ---
展开来说明,如下:


1. 先简单地说一下词源
以方便从常见简单的意思 理解到 引申比喻的意思~
Fork 的本义是  叉子(名词)



比较自然的引申成 分叉(动词) ,就像上面叉子,从左到从右,一条线变成多条了。
更多 词含义参见 fork是什么意思_fork在线翻译。


2. 在计算机领域中,Fork一词的使用
2.1 Git/GitHub仓库克隆
Git/GitHub 用户下面的图 来表达 Fork:分叉、克隆 出一个(仓库的)新拷贝。

要了解GitHub中Fork的话 ,如 @李雨泽 回答中所说的,其实是要理解的是 forking 工作流,参见本人的中文译文《Forking工作流》 github.com/oldratlee/translations/git-workflows-and-tutorials/workflow-forking.md,以及相关的典型工作流 《Git工作流指南》  oldratlee/translations
2.2 Linux 的 Fork 函数
运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程,这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。
# 详见 fork_百度百科
Fork 函数的命名所表达含义/比喻 和 GitHub中Fork 类似。
可见,Fork一词在计算机界 这样的用法 也是 由来已久
# Fork 函数 具体命名出现的时间 还没有考证,欢迎 Linux高手给出考证。
3. 为什么Fork会火起来( 有些和楼主本义无关的闲话 :)
在『码农』圈 Fork一词,现在确实很火,当然和『全球最大的同性交友网站GitHub』流行而大大提高出镜率有关系,常常可以看到『Fork me』这个词,鼓励别人Fork自己的仓库,通过PullRequest给自己的仓库做贡献,也是提高了自己仓库的知名度。
# 关于 PullRequest 参见 github.com/oldratlee/translations/git-workflows-and-tutorials/pull-request.md
另外,个人觉得的原因是:
1. Fork 一词 谐音了 『F*ck』,『Fork(F*ck) me』能体现自己的幽默态度。有Sex暗示的内容总是容易让人兴奋和记住,人的本性,哈哈
2. Fork可能也有那方面的含义:Forking - A sexual act.
参见 Yahoo Answer(这个链接不能访问了,因为Yahoo这个服务已经关停了...) https://answers.yahoo.com/question/index?qid=20080812235131AAlzJmn
回复

使用道具 举报

该用户从未签到

7

主题

62

帖子

224

积分

中级会员

Rank: 3Rank: 3

积分
224
发表于 2022-9-22 09:15:49 | 显示全部楼层
相当于你在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中时,可以pull request,这样原项目的作者就可以将你修改的东西合并到原项目的主分支上去,这样你就为开源项目贡献了代码,开源项目就会在大家共同的努力下不断壮大和完善。
回复

使用道具 举报

该用户从未签到

6

主题

23

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2022-9-22 12:23:19 | 显示全部楼层
上面说的都是局部,其实是forking 工作流的一个功能。



详情:1.translations/workflow-forking.md at master · oldratlee/translations · GitHub
2.在Github和Git上fork之简单指南
3.GitHub 的 Pull Request 是指什么意思?
回复

使用道具 举报

该用户从未签到

2

主题

56

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2022-9-22 15:30:49 | 显示全部楼层
影分身之术,
回复

使用道具 举报

该用户从未签到

6

主题

17

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2022-9-22 18:38:19 | 显示全部楼层
Fork 即「复刻」——把别人的项目复制为自己的,可随意修改。官方文档:复刻仓库 - GitHub 帮助
Fork 千万不要用于私有项目团队协作,它仅适用于开源协作。

GitHub Flow:面向团队成员协作,禁止提交主干,每个人有权创建临时分支,发起合并请求(pull request)。官方文档:Understanding the GitHub flow
Fork:面向团队外部协作者,无权创建临时分支,所以不得不复刻,发起跨项目合并请求。
Fork 不属于 GitHub Flow,也不属于任何一种 Git Workflow。
错误案例:获得了很多赞,误导不少人……

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表