前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >加入开源 - 迈向开源的第一步

加入开源 - 迈向开源的第一步

作者头像
airmelt
发布2023-02-28 15:57:14
3400
发布2023-02-28 15:57:14
举报
文章被收录于专栏:air的代码小屋

在阅读了开源圣经《大教堂与集市》后,如果你也像我一样,对开源充满了兴趣,但是又苦于无从下手,这篇文章将手把手教你如何参与开源。

加入开源 - 《大教堂与集市》读后感

本文将从 3 个方面由浅入深详细展示如何真正参与开源。如果想直接参与一个开源项目,建议直接从第二部分「first-contributions」开始阅读。

使用 Git

「工欲善其事,必先利其器」。在互联网上要与他人一起合作开发,首先我们需要学习如何使用 Git。下面以 GitHub 为例,简单说明 Git 的使用。

Mac 一般会自带 Git,也可以通过安装 XCode 或者 homebrew 安装。Windows 系统可以从 Git 官网(可以通过阅读原文获取)。选择默认选项安装即可。安装完成之后打开终端(Terminal),输入

代码语言:javascript
复制
git --version

检查 Git 是否已经安装成功,安装成功将如下图所示显示 Git 的版本信息:

安装完成之后,我们需要在终端中输入以下代码设置一个名字和 email 来标识上传代码的人的身份:

代码语言:javascript
复制
git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"

将 "Your Name" 和 "your-email@example.com" 替换成自己的名字和 email。为了识别我们电脑的身份,也就是说让 Git 能够识别代码确实是通过我们的电脑上传的,需要在电脑上生成一个 SSH Key 作为电脑的身份标识。在终端中输入以下代码:

代码语言:javascript
复制
ssh-keygen -t rsa -C "your-email@example.com"

这里的 "your-email@example.com" 可以使用上面的 email 地址。如果没有报错信息,我们可以在用户主目录(Mac 在 ~ 目录下,Windows 在 C 盘的用户名目录)找到 「id_rsa」和「id_rsa.pub」两个文件。用文本编辑器打开「id_rsa.pub」文件,按下图顺序点击将里面的内容复制到 key 文本框中,标题(Title)可以任取一个自己能分辨的:

接着我们需要在 Github 上创建一个远程仓库用来存放代码:

按照上图所示顺序点击,给自己的仓库命名,其他选择默认即可,最后选择「Create repository」。完成之后 GitHub 会提示你可以创建自己的代码或者将已经存在的代码「推送」到这个代码仓库中。为了和下面介绍参与开源项目一致,这里介绍将仓库拉取到本地的方法。

点击复制,接着在终端中输入以下代码:

代码语言:javascript
复制
git clone "your reposity ssh"

这样就能在当前目录创建一个本地代码库。

一般开发的流程是,从「dev」分支创建一个自己的分支「my-branch」用来开发,将开发好的代码合并到 「dev」分支并提交 PR(Pull Requests)给同事或者领导审阅(Review)。定期将「dev」分支的代码合并到「main」分支,「main」分支上的代码才是真正给用户使用的代码。下面是一些常用的 Git 命令

代码语言:javascript
复制
git checkout -b "my-branch"
git add file
git commit -m "commit comment"
git merge dev
git push origin dev

第一条命令表示创建一个自己的分支并转到这个分支;第二条命令表示将某个文件加入到 Git 仓库中,如果使用 "git add ." 表示将所有文件加入 Git 仓库中;第三条命令表示提交当前的修改,并加上了注释 "commit comment";第四条命令表示将当前分支合并到 「dev」;第五条命令表示将「dev」分支推送到远程仓库中。当然现在 IDE 和 VS Code 对于 Git 的支持非常完善,可以通过这些工具来轻松完成 Git 相关的工作。推送完成之后就可以打开远程仓库,在 Pull Requests 栏目下可以看到提示创建一个新的 PR。

创建 PR 之后,如果通过了代码审查(当然如果这个仓库是你自己一个人在管理,可以直接点击 「Approve」),仓库的管理员会把你的代码合并到分支中,这样基本上就完成了代码提交的工作。

first-contributions 项目

这里给大家推荐一个简单的开源项目,参与这个开源项目能让你完整地体验开源的流程。

通过 GitHub 搜索或者直接输入(https://github.com/firstcontributions/first-contributions)能很容易地找到这个项目。项目默认提供的英文版的流程,也有其他非常多的语言版本支持。

点击对应的国旗就能找到其他版本的语言支持。后文将假定你已经安装完成了 Git,如果对 Git 安装有问题,可以跳回本文第一部分重新阅读。点击这个仓库的「Fork」按钮可以在自己的 Git 中复制一个仓库,这个仓库从源仓库复制过来,但是你对自己的仓库具有完全的读写权限:

打开终端(Terminal),输入以下代码就可以将这个项目拉取到本地:

代码语言:javascript
复制
git clone "https://github.com/your-name/first-contributions.git"

将 "your-name" 修改成自己的名字,如果 「Fork」时选择的是默认的名字,那么不需要修改其他的参数。然后在本地找到这个仓库对应的文件夹,切换到这个文件夹,并创建一个自己的分支:

代码语言:javascript
复制
cd first-contributions
git checkout -b "your-branch"

使用任意的文本编辑器打开 「Contributors.md」这个文件,在这个文件的末尾加上自己的名字,比如我加上的是

代码语言:javascript
复制
- [airmelt](https://github.com/airmelt)

然后使用 add 和 commit 命令将这个修改保存,使用 push 命令将修改推送到远程仓库:

代码语言:javascript
复制
git add Contributors.md
git commit -m "commit comment"
git push -u origin your-branch

由于是第一次提交,需要加上 -u 参数。然后打开原仓库,注意不是自己的仓库,提交一个 PR。提交 PR 可以命名一个有意义的标题和添加一些说明,PR 如果没有冲突,会自动通过,通过之后会发送邮件通知,这样就完成了这个项目的贡献。

good first issue

如果上面简单的开源还是无法满足你参与开源的需求。可以从一个成熟的开源项目的 PR 中搜索 「good first issue」来完成一些适合新手的任务。

下面以我在「nerdctl」(https://github.com/containerd/nerdctl)项目的第一个贡献为例子简单说明一下如何参与一个开源项目。首先打开这个项目然后在「Issues」中搜索「good first issue」,选择一个适合自己的问题并进入。

我当时找了一个看上去比较简单的问题,应该是缺失了换行符("\n")导致的:

通过阅读它的描述和自己实际动手测试,发现是在第二行的后面缺失了换行符。定位到这个文件(其实在评论和提交的文件中都有链接),在输出中加上换行符就可以了。

接下来的一步才是比较重要的一环,参考之前提的 PR 的格式,填写 PR 的内容并完成相关测试:

这里还有一个需要注意的地方,在推送代码的时候,项目要求必须签名,实际上就是在 commit 的时候加入 -s 参数引入自己的用户名和邮箱即可。提交完 PR 之后会有一些人来审查代码,这个是一个非常难得的交流机会,尽自己所能回答他们的问题就好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 air的代码小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档