目录

如何给开源社区贡献代码小白适用实操版,附练习实验用的仓库,欢迎随便试

如何给开源社区贡献代码(小白适用实操版,附练习实验用的仓库,欢迎随便试)

前言

练习提交第一个 PR ,这对于开源新手来说会是一个很好的开始,对 git 不是很熟悉,但希望参与到开源社区中的小伙伴,可以参考下文教程, fork 练习仓进行 git 提交练习。

练习仓地址:https://github.com/TinaSprunt/How-to-contribute-code-to-the-open-source-community

可以轻松的提交任何东西,不必担心产生错误,这只是一个练习 git 的流程。无论提交啥反正我都会通过的。

放轻松,迈出开源的第一步。

一、fork 社区仓库

打开你想参与贡献的社区的仓库的 github 页面,并且 fork 这个仓库

https://i-blog.csdnimg.cn/blog_migrate/861011d891c14835d0308d8ece85c577.png#pic_center

打开你自己的 github 页面,此时应该会多一个仓与你刚 fork 的仓库同名

https://i-blog.csdnimg.cn/blog_migrate/8cc80d89ae6070a1101425dd1a038b43.png#pic_center

二、更新fork仓库与社区仓库同步

官方仓:你想要贡献的项目的官方仓库地址

远程仓:你 fork 下来之后,在你的 github 页面上那个与官方仓同名的仓库地址

本地仓:git clone 远程仓之后下载到你本地的代码仓地址

fork 下来的不用, fetch upstream 按钮点击后会显示你与官方仓是一致的,不需要更新。就像这样

https://i-blog.csdnimg.cn/blog_migrate/0a49348c71ca561babe84f7fddb3a9e4.png#pic_center

如果是已经 fork 了一段时间的,官方可能已经进行了很多修改,与你 fork 下来的时候不一样了,就需要 fetch upstream 查看官方更新,点击 fetch and merge 按钮进行同步

https://i-blog.csdnimg.cn/blog_migrate/ca73d13cbe1af4f98f089d3efb834cdf.png#pic_center

命令行同步方式,等价于上面的界面操作, 二选一即可 ,小白建议直接点界面

# 克隆fork到自己github的代码仓
git clone git@github.com:TinaSprunt/test.git

# 检查 remote 信息

git remote -v

https://i-blog.csdnimg.cn/blog_migrate/179df96551a5e37a508738ce38abac46.png#pic_center

# 添加官方仓地址
git remote add upstream https://github.com/peiyaos/test.git

https://i-blog.csdnimg.cn/blog_migrate/9e7401b6a6288fc0ed459ad4aa387267.png#pic_center

# 拉取官方仓文件,进行同步
git fetch upstream

https://i-blog.csdnimg.cn/blog_migrate/d622de716dc95c5fa028269c65a7db12.png#pic_center

# 将你已经同步好的本地仓 push 到你的远程仓
git merge upstream/master

https://i-blog.csdnimg.cn/blog_migrate/b1fc4a90a29718322c912f8fc83f943a.png#pic_center

此时本地仓、远程仓、官方仓三者就处于一致状态了,可以进行开发了

同步流程关系简单画了个图,辅助理解:

https://i-blog.csdnimg.cn/blog_migrate/21b0ad1ce5e26dc8b96853f3e22c7065.png#pic_center

三、新建开发分支进行开发

https://i-blog.csdnimg.cn/blog_migrate/d043a3578f5324fcc8ef8fdca5155fa0.png#pic_center

命令行新建分支方式,等价于上面的界面操作, 二选一即可 ,小白建议直接点界面

# 新建分支
git checkout -b fixBug

# 推送该分支到远程仓

git push -u origin fixBug

https://i-blog.csdnimg.cn/blog_migrate/28f2d0d2fdbf442ecda74b873e84cad6.png#pic_center

此后是代码开发 balabala……

四、开发分支本地开发完成后 push 到远程仓

# 查看修改了那些文件
git status

# 查看修改内容

git diff

# add 提交

git add .

# commit 提交(如果官方仓需要 Signed-off-by 检查的就带账号邮箱信息)

git commit -m "xxxxx" -s

# push 到远程仓

git push origin

https://i-blog.csdnimg.cn/blog_migrate/77d8a6ad06a9456eb11119c416327cf2.png#pic_center

五、向官方仓提交 PR

打开你自己的 github 页面的对应远程仓,会有出现可合并的分支提示

https://i-blog.csdnimg.cn/blog_migrate/561491941e501aad363105f597b95a6a.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/8058db22d745437479f1f32764071b72.png#pic_center

各家的 PR 说明格式要求不同,可以前往官方仓查看他的贡献指南,一般会给出示例模板。

举个栗子,以下是 kubesphere console 的 PR 说明模板(此例是修复 1543 issuse):

**What type of PR is this?**
/kind bug

**What this PR does / why we need it**:
rename the button 'Rerun' to 'Run' on the b2i page #1543

**Which issue(s) this PR fixes**:
Fixes #1543

**Special notes for reviewers:**

**Additional documentation, usage docs, etc.:**

六、提交 PR 之后

提交 PR 之后,可以前去官方仓查看审查情况

比如这种是官方仓没有机器人检查的

https://i-blog.csdnimg.cn/blog_migrate/f6b0b5d67150848fe8502e935b5a2a91.png#pic_center

比如这种是有静态检查的,需要全部变绿 √ 才算成功,黄色是处理中需要等待,红色则是你提交的代码还有问题,需要重新修改

https://i-blog.csdnimg.cn/blog_migrate/0efc47ccdb378084bebb6d2c83485689.png#pic_center

比如这种是审批完成之后的样子

https://i-blog.csdnimg.cn/blog_migrate/4ebb4ce2f74c4082dbd75bdfd6bb89c2.png#pic_center

至此一个完整的 PR 就结束了

七、如果不幸 code review 失败,如何重新提交

其实一次成功的几率真的不大,失败是常态平常心就好(大佬的话当我没说,反正我不是大佬哈哈哈哈哈哈)

code review 失败,一般官方会回复你为什么给你审批为失败,然后基于此再改,改好了重新提交

重新提交有 2 种方式:

1.关闭此 PR,提新的 PR (非常不推荐这种方式、这一点都不优雅)

2.基于本次 PR 进行修改

  • 新增一次 commit (会多一次提交记录,小修改不推荐,适合大量修改)
  • 基于最后一次 commit (推荐这种,小推荐这种修改方式)

实操流程:

小修改(基于本次 PR 的最后一次 commit 修改)的情况:

# 本地仓切换到开发分支
git checkout fixBug

# 修改代码 balabalabala....

# 检查后 add 代码

git diff
git add .

# 基于最后一次 commit 提交代码(出现提交信息编辑页面直接 wq 保存退出即可)

git commit --amend -s

# 推送代码(如果此前提交有用-f,此时也需要使用-f,务必要在完全确认正确的情况下使用-f)

git push origin

此时,已经提交的 PR 也会自动产生变更,再次进入审核流程

大修改的情况,比如修改很久之前的某次提交,具体参考变基,根据修改量大小,上面 2 种重新提交方式酌情使用

总结: 核心思想就是把本地仓处理好之后提交到远程仓,PR 会随之变化重新进入审批流程。

开始打开新世界大门吧

提供了一个仓给大家模拟练习提交 PR,我想对于小白来说这是很需要的

练习仓地址:https://github.com/TinaSprunt/How-to-contribute-code-to-the-open-source-community

你可以 fork 这个仓然后提一个 PR 试试练练手,无论提交啥反正都会给审批通过的,大家如果觉得有用,就给练习仓点个 start^-^