乐趣区

关于程序员:学习分享-记录开源小白的第一次-PR

本文由 RT-Thread 论坛用户 @yanlineng 原创公布:https://club.rt-thread.org/ask/article/5a3155877b44066c.html


大家好,我是一枚开源小白。之前没有过开源经验,没有理论体验过开源过程,也没有加入过开源流动。凭借好奇和学习的心态,想在开源社区提交本人的奉献;最近本人第一次向 RT-Thread 官网仓库提交 PR,最终胜利合并,算是一次开源的入门,也是本人第一段开源经验。这里想简略记录一下这一次 PR 的过程,心愿可能帮到想要参加开源以及行将要参加开源的小伙伴~

目录:

对于工具与筹备

  • 须要“迷信上网”工具,便于拜访 Github;
  • 在 PC 上装置 git 环境;
  • 理解一下 git 相干基本概念,根本命令,理解一下这个弱小的版本控制软件;
  • 参考:Git 根底与分支 | Github 的基本操作

能够为开源我的项目奉献什么?怎么疾速参加到开源?

这想必是和我一样的开源小白会遇到的第一个问题。我想参加进来,然而我能做些什么奉献什么?其实咱们能够多看看官网仓库的 issue,这外面有一些大家提出的问题或者正在须要解决的问题,波及到方方面面:

这外面有很多问题和话题,如果本人没有指标的话能够先逛一逛,看一看哪些问题本人感兴趣或者能解决。这样初步的一个指标就能够定下来了。而对于小白来说,能够先看看 “good first issue” 标签分类下的 issue,轻易点一下下面蓝色的标签就能够看到全副该标签下的 issue(这一类的 issue 更适宜刚入门的开源小白)。或者有本人的想法也能够,感觉哪里不好想本人入手欠缺一下。选好指标,就能够开始做啦。

我这次次要是做的 bsp 中文档欠缺相干的奉献,首先体验一下整个 PR 过程。

如何批改内容?

首先要将官网仓库 fork 到咱们本人的仓库下,点击一下 Fork 按钮,依照提醒操作就能够 Fork 实现了。


而后在本人的仓库里就能够看到刚刚 fork 过去的 rt-thread:

接着点击 Code 按钮,应用 SSH 形式 克隆到本地,首先复制一下 ssh 的链接。

在本地 PC 上,抉择一个适合的目录,点击右键关上 Git Bash Here,进入 git 命令行工具后应用 git clone 命令克隆仓库到本地:

git clone [刚刚复制的 ssh 链接]

ps: 这里倡议配置一下 github 的 ssh 连贯形式(参考),当前每次 拉取或推送 批改到本人的仓库时就不须要输出明码了。去年 github 更新过对于 ssh 的应用,ssh 密钥的生成形式最好依照官网教程去生成 ed25519 密钥,其余步骤都不变。

克隆实现后,就能够在本地目录下看到整个仓库的内容,这个作为本地仓库(其实就是 github 上近程仓库的一个分身),咱们的批改都先保留在本地仓库,接着应用相干命令就能够 push 到关联的近程仓库啦。

接着依照咱们的须要批改本地仓库外面的内容就行。

如何提交批改?

实现批改后,在本地仓库目录下 关上 git bash 命令行界面。

  1. 查看状态

    输出 git status 命令能够查看以后本地仓库的状态,比方哪些文件是新增加的(new)、哪些文件批改过(modified)。

  2. 增加批改

    应用 git add + [filename] 能够增加以后 filename 文件的批改(根据 git status 中显示的信息逐渐增加本人须要的批改),git add . 则是增加全副批改。

    如果须要增加一些 被 git 默认疏忽的文件类型,应用 git add -f [filename] 即可。

  3. 提交到本地仓库

    应用 git commit -m“[对本次提交的一些描述性的话语]” , 即可提交本次批改到本地仓库。

  4. 提交到近程仓库

    如果是通过 ssh 形式 克隆下来的,应该曾经默认增加了本人的近程仓库地址。

    能够通过 git remote -v 查看一下,是否有本人的近程仓库地址。如果没有的话,能够通过 git remote origin [近程仓库地址] 增加一下。

接着应用 git push origin master (本地的分支是 master, 能够更换), 即可将刚刚的 commit 从本地仓库推送到到近程仓库。

  1. 而后在 github 上查看本人的仓库,应该就能看到刚刚 commit 的内容,点进 commit 能够看到一些批改内容,在这次外面我次要批改了一些文档内容,并且增加了一个新文件。

察看这个比照图,是能够看见我做的一些批改的,包含删除和增加。

到这里曾经把本次批改提交到本人的 github 仓库了。

如何 Pull Request (PR)?

PRPull Request , 所谓提交本人的 PR,其实就是 申请 官网仓库 拉取 本人的代码 合并到仓库中。

直观一点,就是我本人批改了官网的代码或者文档,当初我想将这些批改合并到官网仓库中。也就是为开源我的项目做奉献的最初一步,一旦 PR 胜利,咱们也就实现了这一部分的开源奉献。

从之前的步骤能够晓得,咱们本人 github 仓库 中的 rt-thread 是从官网仓库 fork 来的,并且后面咱们曾经 commit 批改到本人的仓库了,当初咱们在本人仓库里的 rt-thread 中点击提交 PR,点击图中的 New pull request 按钮。

能够看到咱们曾经跳转到官网仓库了,而后在下方能够看到在本人仓库里的几次 commit。接着点击左边绿色的 Create pull request 按钮。

跳转到一个具体页面,在上方也能看到咱们心愿本人仓库的 master 分支合并到 官网仓库的 master 分支;在上面编辑框咱们须要填写一些必要信息,这个参考阐明如实填写即可。最初持续点击 Create pull request。

到这里,这次 PR 过程就算开启了,在官网仓库的 Pull requests 选项页 也能够看到本人的 PR 正在流程中。

第一次 PR 的贡献者还须要在 PR 界面承受一下 CLAassistant 的贡献者许可。

而后期待自动化审查代码过程,期待管理员的人工审核即可。

如果顺利的话,最终 PR 可能被认可,那么咱们的批改就能够合并到官网仓库了!

额定的一些话题

1. 如果咱们是针对 一个 issue 进行的奉献,在我提交 PR 后如何和这个 issue 关联起来,让提出者疾速看到?

在这里咱们能够先看到 issue 界面,点进相干的 issue 能够看到 题目左边有一个“#”+ 序号,这个就是一个事件的辨认号,在 github 上,同一个仓库里 应用这个序号能够定位到惟一中央。

我的 commit 流动或者 PR 流动能显示在这里,是因为我在 commit 形容 或 PR 形容中退出了 #5923,github 会自动识别并关联。

当然咱们也能在各个可能评论的中央 输出相干模式序号,就能够主动关联到相干的事件上。

2. PR 过程中,发现之前的 commit 有谬误,须要批改怎么办?

在 PR 过程中,如果咱们查看发现之前的 commit 有问题,须要进行批改,先不要焦急敞开 PR。因为在 PR 过程中,咱们能够屡次 commit 到本人仓库的提交 PR 的分支(我这里之前是 master 分支),并且这些 commit 是会被 PR 过程主动同步进来的,也就是说 PR 过程中 咱们能够提交屡次 commit,都是会推送到 PR 中的。

我这里之前发现错误想批改,就本人敞开了 PR,其实不须要,前面持续 commit 批改内容就行。

这应该也是为了不便 PR 过程中,为管理员 与 开发者可能批改 commit 提供一些灵活性。遇到一些小问题,小 bug 时,不必要敞开 PR 重来,而是持续提交即可。

在 PR 过程中,也能够看到整体的批改成果,也就是说屡次 commit 会整合在一起,查看 PR 过程最新的批改状况。如下图,点击 PR 界面的 Files changed,批改一下设置就能够看到比照图了。

3. 对于分支的一些问题

在这次奉献过程中,我 fork 完官网仓库中的 rt-thread 后,拉取本人仓库的 rt-thread 到本地,此时默认只有 master 主分支,并且在批改实现当前 commit 到了 master 分支。其实这样是不明智的。

能够构想一下如果咱们须要同时进行很多性能的开发,也是同时在 master 一条分支上进行批改。那么很大可能会将 master 分支上代码置于谬误的状态,尽管 git 工具反对版本回滚,但这过程中又会造成其余问题。我这次只是做了一次简略批改,的确不会导致很重大的结果,然而这种危险是存在的。

因而最好在每一项批改需要开始的时候,新建一个属于此次批改目标的分支,与主分支 master 隔离开来,这样的话无论怎样在新分支上进行批改,也根本不会影响到 主分支 master 上的代码状态,总是能放弃 master 分支上的正确运行。待到批改实现,并测试成熟当前,再合并此分支到主分支上,基于此能进行多分支的需要开发啦。

对分支的了解参考 git 分支有什么用

结语

第一次 PR 胜利多少还是有一些兴奋感,看到本人的提交能合并到官网仓库中是很开心的。回顾之前为什么没有参加到开源中来,次要还是感觉开源奉献应该有多大的难度、有多大的工作量,感觉本人能力不够。其实不然,开源我的项目中有很多细节须要开发者去欠缺,这些工作工作或难或易,大家根据本人能力或工夫抉择即可。开源的主旨也不是以某些硬性条件作为规范,而是每个人都能够为开源我的项目奉献内容,奉献沉闷,贡献力量。

第一次写文章都是以集体了解进行论述,有问题的中央请大家多多包涵。
有感兴趣的小伙伴也能够看看这个链接 如何给 RT-Thread 提交 PR,外面有官网的 PR 视频教程 从 0 教你如何给 RT-Thread 奉献代码。

退出移动版