很多人对如何参与开源项目感觉无从下手,今天我来以一个真实的 Github 开源项目举例,带你学会新手如何参与

开源项目的第一步,就是学会“复制”一份属于自己的代码副本。Fork 就像是在 GitHub 上按下了复印机按钮,把别人的项目完整复制到你的账户下,这样你就能自由修改而不影响原项目了。

1. Fork 并拉取代码(把开源代码”偷”回自己家)

1.1 你需要做的具体操作

1.1.1 Fork(复制项目)
  • 打开官方项目主页:https://github.com/1Panel-dev/CordysCRM
  • 看页面的右上角,找到一个叫 Fork 的按钮(旁边通常有个数字),点击它。
  • 在弹出的页面里,直接点击 Create fork(默认设置就行)。
  • 完成标志:网页会自动跳转,你会看到左上角的项目名变成了 你的GitHub用户名/CordysCRM,并且下面有一行小字写着 forked from 1Panel-dev/CordysCRM
1.1.2 Clone(下载到本地)
  • 你刚刚 Fork 出来的这个页面上,点击绿色的 Code 按钮。
  • 复制那段 URL 链接(应该是 https://github.com/你的用户名/CordysCRM.git)。
  • 在你的电脑本地找个干净的文件夹,右键打开 Git Bash(或者命令行终端)。
  • 输入命令并回车:git clone 刚才复制的链接
  • 等待代码下载完成。

1.2 为什么要先 Fork?

1.2.1 权限问题

在开源世界里,任何人都可以官方的代码(Read),但不是任何人都能官方的代码(Write/Push)。
你目前对 1Panel-dev/CordysCRM 这个官方仓库是没有”写入”权限的。如果你直接 git clone 官方的仓库,你在本地改完代码后敲 git push,GitHub 会直接无情地拒绝你(报错 403 Permission Denied)。

1.2.2 Fork 的本质

Fork 的本质,就是”合法复印”。

image-20260606143721912

你把它 Fork 到了你自己的账号下,你就成了这份”复印件”的最高管理员。在这份复印件里,你想怎么改、怎么推(Push)代码都可以。
等你在这份复印件上把功能做好了,你再跑到官方那里敲门说:”嘿,我在我的复印件上加了个很棒的功能,你要不要把我的改动抄过去?”——这个”敲门”的动作,就是后面会提到的 PR (Pull Request)

1.3 保持与官方同步

1.3.1 Fork 版本是否自动更新

Fork 版本绝不会自动更新

在你的代码世界里,现在一共有 3 个仓库

  1. 上游仓库(Upstream): 官方的 torvalds/linux。这是代码的源头。
  2. 你的远程仓库(Origin): 你刚刚 Fork 到自己账号下的 你的名字/linux 。它是官方仓库的复印件
  3. 本地仓库(Local): 你刚刚 Clone 到你电脑硬盘上的代码。

02-infographic-repo-relation

1.3.2 同步方法

🧠 在这里我介绍一种最简单的方法,别的方法比较麻烦就不介绍了。

为了保持同步,你需要在每次提交代码前(或者很久没有开发重新跟上进度),你需要先把你的远端仓库改成最新的,在你 pull 的时候处理冲突。

在你自己的 GitHub Fork 页面,在代码列表的上方,会有一个叫 ”Sync fork”(同步分支) 的按钮。

image-20260415202332765

点一下它,GitHub 会自动把官方的更新拉到你的复印件(Origin)里。

等我开发完成之后,push 到自己的远程仓库之后,进入 GitHub:自己项目地址会有提示你进行 PR 申请,点击即可完成。

1.4 企业和开源开发的区别

1.4.1 企业内部开发(有写入权限)
  • 流程:直接克隆官方仓库 → \rightarrow 基于 main 建立自己的分支 → \rightarrow 开发并 push 到公司远程仓库 → \rightarrow 提 PR(Pull Request)到 main 分支。
  • 特点无需 Fork。你是在官方仓库内建分支,PR 的方向是:你的分支 -> 公司的主分支
1.4.2 开源项目贡献(无写入权限)
  • 流程:先 Fork 官方仓库到自己的账号 → \rightarrow 克隆自己的仓库 → \rightarrow 开发并 push 到自己的仓库 → \rightarrow 跨仓库向官方提 PR。
  • 特点必须 Fork。你不能直接 push 代码到官方仓库,PR 的方向是:你的专属仓库 -> 官方仓库
1.4.3 一句话终极总结
  • 企业开发有权限 → \rightarrow 直接在官方仓库建分支 → \rightarrow 内部提 PR 合并。
  • 开源贡献没权限 → \rightarrow 先 Fork 一份到自己账号 → \rightarrow 改完后跨仓库提 PR 给官方。

2. 成为 Assignees

2.1 基本概念

在 GitHub 的开源世界里,关于 Assignees 有一个非常重要的底层逻辑:作为普通的贡献者(你目前没有官方仓库的管理员权限),你没有办法自己去点击那个按钮把自己加进去。

只有官方的维护团队(Maintainers)才有权限修改 Assignees

所以,成为 Assignees 的过程,其实就是一个**”申请接单 -> 官方派单”**的沟通过程。具体有两种情况:

image-20260606144759874

2.2 情况一:接他人的 Issue

2.2.1 前提条件

如果你在 Issue 列表里逛,发现了一个别人提的 Bug,而且 Assignees 是空的,你想接下这个活。

2.2.2 具体做法

在这个 Issue 最下方的评论区(Comment),用友善、专业的语气留言”抢单”。

你好,我本地已经复现了这个问题并且大概知道了修复思路。请问可以把这个 Issue 分配给我吗?

Can you assign this issue to me? I would like to try to fix it.

2.2.3 接下来会发生什么

官方维护人员看到了你的留言,觉得很棒,他们就会在后台操作,把你的头像挂在 Assignees 上,并回复你:”欢迎提交 PR!” —— 这时候,你就是名正言顺的 Assignee 了!

2.3 情况二:自己发现并报告 Bug

2.3.1 前提条件

既然是你自己发现的 Bug,你肯定是第一个知道怎么修的人。

2.3.2 具体做法
  1. 点击那个绿色的 New issue 按钮,创建一个新的 Bug 报告。
  2. 在描述完 Bug 之后,在正文的最末尾,主动加上一句”要单”的话:

    我想尝试修复这个问题并提交 PR,麻烦请将此 Issue 分配给我。

2.3.3 接下来会发生什么

官方人员审核你的 Issue 觉得确实是个 Bug 后,顺手就会把你设置成 Assignees

2.4 重要提醒:开源世界的”潜规则”

2.4.1 维护人员可能忘记的情况

有时候,官方维护人员可能比较忙,他们看到了你的留言,会在下面回复一句:”Welcome!”(欢迎)或者 ”Go ahead, looking forward to your PR”(搞起,期待你的代码)。

2.4.2 对策

但他们忘了把你加到 Assignees 里,怎么办?
答案是:没关系,直接开始写代码!
在开源社区,只要官方在评论区明确同意了你的请求,这就相当于已经”口头分配”给你了。那个头像挂不挂上去,已经不重要了。


3. 参考资源

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐