成为 Apache 贡献者,从提交第一个简单 PR 开始!
开源之路,PR 走起 !
---全球最大同性交友社区
1
fork
以下实例以 incubator-dolphinscheduler 海豚调度为例进行操作
从远端仓库* https://github.com/apache/incubator-dolphinscheduler.git * fork 一份代码到自己的仓库中
注:国内用户也可以从 Gitee fork 到自己的仓库中,速度会更快一些: https://gitee.com/dolphinscheduler/DolphinScheduler.git
2
clone
把自己仓库clone到本地
λ git clone https://github.com/xx/incubator-dolphinscheduler.git
Cloning into 'incubator-dolphinscheduler'...
remote: Enumerating objects: 304, done.
remote: Counting objects: 100% (304/304), done.
remote: Compressing objects: 100% (200/200), done.
Receiving objects: 100% (54821/54821), 152 (delta 38), pack-reused 54517 eceiving objects: 100% (54821/54821), 77.07 MiB | 918.00 KiB/s
77.08 MiB | 463.00 KiB/s, done.
Resolving deltas: 100% (23530/23530), done.
Updating files: 100% (1557/1557), done.
3
remote
添加远端仓库地址,命名为upstream
git remote add upstream https://github.com/apache/incubator-dolphinscheduler.git
查看仓库
λ git remote -v
origin https://github.com/xx/incubator-dolphinscheduler.git (fetch)
origin https://github.com/xx/incubator-dolphinscheduler.git (push)
upstream https://github.com/apache/incubator-dolphinscheduler.git (fetch)
upstream https://github.com/apache/incubator-dolphinscheduler.git (push)
此时会有两个仓库:origin(自己的仓库)和upstream(远端仓库)
4
branch
查看分支
λ git branch -v
dev d70d8a60 [Feature-3222][datasource] Store password in ciphertext instead (#3330)
创建分支
λ git checkout -b dev-local
Switched to a new branch 'dev-local'
dev-local 用于本地测试、开发
在提交PR之前,需要创建一个分支专门用作此次PR代码分支,等待合并到原远端仓库后,可删除分支。
git checkout dev
dev-imp-server-ProcessUtils-temp 用于解决代码冲突
dev-imp-server-ProcessUtils 用于提交PR 的代码分支
D:\developer\git-repository\incubator-dolphinscheduler (dev-imp-server-ProcessUtils)
λ git add .
D:\developer\git-repository\incubator-dolphinscheduler (dev-imp-server-ProcessUtils)
λ git commit -m "server model ProcessUtils.java code cleaning." .
[dev-imp-server-ProcessUtils 69ba65db] server model ProcessUtils.java code cleaning.
1 file changed, 6 insertions(+), 16 deletions(-)
D:\developer\git-repository\incubator-dolphinscheduler (dev-imp-server-ProcessUtils)
λ git push origin dev-imp-server-ProcessUtils
5
pull request
登录github.com 在自己仓库下,如果有更改的分支,系统会有提示栏,也可以通过点击 Pull request栏new pull request.
需要填写对本次RR的一个描述,目的,变更日志等。在网页下面也可以看见本次PR提交的代码变更。本次实例只是做了一些代码清理,清理不在引用的变量和清理不需要上抛的异常类型。
提交之后,接着社区Committer们会做CodeReview,然后他会与您讨论一些细节(包括设计,实现,性能等)。当团队中所有人员对本次修改满意后,会将提交合并到dev分支。
6
同步
如何保持和原远端仓库同步???
获取/更新远端仓库代码
git fetch upstream
From https://github.com/apache/incubator-dolphinscheduler
* [new branch] 1.2.0-release -> upstream/1.2.0-release
* [new branch] 1.2.1-release -> upstream/1.2.1-release
* [new branch] 1.3.1-release -> upstream/1.3.1-release
* [new branch] 1.3.2-release -> upstream/1.3.2-release
* [new branch] alert_plugin_design -> upstream/alert_plugin_design
* [new branch] bcai-upgrade-java-version-for-sonarcloud -> upstream/bcai-upgrade-java-version-for-sonarcloud
* [new branch] dev -> upstream/dev
* [new branch] dev-1.3.0 -> upstream/dev-1.3.0
* [new branch] master -> upstream/master
* [new branch] proposal -> upstream/proposal
切换到dev分支
git checkout dev
同步远端仓库dev分支代码到本地仓库dev分支
git merge upstream/dev
提交到自己仓库
git push origin dev
7
贡献第一个 PR
参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括文档、翻译、布道、答疑、测试、以及代码等,此外也极其欢迎各种实践文章,文章内容包含不限于:DS 部署,使用,经验分享,故障处理,源码分析等。DolphinScheduler开源社区非常期待您的参与。
DolphinScheduler 社区参与贡献的方式,包括:
贡献第一个PR(文档、代码) 我们也希望是简单的,第一个 PR 的主要作用是熟悉社区协作流程及感受社区友好度,这个 PR 可以是为文档补充 1、2句话,给代码添加 1、2 行注释等等都行,你说简单不简单?
如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html
文档 github 地址:https://github.com/apache/incubator-dolphinscheduler-website
来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的
小彩蛋
贡献完 一个 PR 后,将邀请加入 DolphinScheduler 的开发者群,享有生产环境若遇到问题优先处理的福利吆
如果以上文章看不大懂,也不要紧,DolphinScheduler有开发者种子群,会培养如何提交自己的第一个 PR ,只要你是想为开源做贡献,欢迎联系

1、DolphinScheduler 社区是非常 open 的,有啥问题都可以随时直接开聊哈/::D
2、参与代码贡献的话,大家可以先尝试在自己本地搭建一下开发环境哈,https://dolphinscheduler.apache.org/zh-cn/docs/development/development-environment-setup.html 按照这个文章,遇到问题欢迎群里直接聊下,必要的话远程看看啥情况
3、当然参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括文档、翻译、布道、答疑、测试、以及代码等,此外也极其欢迎各种实践文章,文章内容包含不限于:DS 部署,使用,经验分享,故障处理,源码分析等等。有意参与非代码贡献的伙伴欢迎群里聊起
4、贡献第一个 PR (文档/文章、代码) 我们也希望是简单的,第一个 PR 的主要作用是熟悉社区协作流程及感受社区友好度,这个 PR 可以是为文档补充 1、2句话,给代码添加 1、2 行注释等等都行
成为 Apache 贡献者,从提交第一个简单 PR 开始!的更多相关文章
- 留念 C语言第一课简单的计算器制作
留念 C语言第一课简单的计算器制作 学C语言这么久了. /* 留念 C语言第一课简单的计算器制作 */ #include<stdio.h> #include<stdlib.h ...
- 创建第一个简单的AI分类器
from sklearn import tree# 第一个简单的分类器features = [[140, 1], [130, 1], [150, 0], [170, 0]] #列表左边的变量代表水果的 ...
- MFC入门(一)-- 第一个简单的windows图形化界面小程序(打开计算器,记事本,查IP)
////////////////////////////////序//////////////////////////////// 大约三年前,学过一些简单的编程语言之后其实一直挺苦恼于所写的程序总是 ...
- asp.net 网站在Apache下的配置,就这么简单
asp.net 网站在Apache下的配置,就这么简单 # # Virtual Hosts # # If you want to maintain multiple domains/hostnames ...
- oracle学习 第一章 简单的查询语句 ——03
1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...
- asp.net 站点在Apache下的配置,就这么简单
asp.net 站点在Apache下的配置,就这么简单 # # Virtual Hosts # # If you want to maintain multiple domains/hostnames ...
- 程序演示:C语言第一个简单实例
在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: 1 2 3 4 5 6 7 8 9 #include ...
- Linux:apache第一个简单的站点
前提: apache安装目录再/application/apache/ 1.先进入安装目录中 cd /application/apache/ ls 查看目录中的内容 可以看到好多我们常见的文件夹,bi ...
- 成为 Apache 贡献者,So easy!
点击上方蓝字关注 Apache DolphinScheduler Apache DolphinScheduler(incubating),简称"DS", 中文名 "海豚调 ...
随机推荐
- ARC126F
[ARC126F] Affine Sort 给定一个长为 \(N\) 的序列 \(x\) ,定义 \(f(K)\) 表示满足下述条件的 \((a,b,c)\) 个数: \(1\le c\le K,0\ ...
- 3000帧动画图解MySQL为什么需要binlog、redo log和undo log
全文建立在MySQL的存储引擎为InnoDB的基础上 先看一条SQL如何入库的: 这是一条很简单的更新SQL,从MySQL服务端接收到SQL到落盘,先后经过了MySQL Server层和InnoDB存 ...
- Flink中如何实现一个自定义MetricReporter
什么是 Metrics 在 flink 任务运行的过程中,用户通常想知道任务运行的一些基本指标,比如吞吐量.内存和 cpu 使用情况.checkpoint 稳定性等等.而通过 flink metric ...
- 《Unix 网络编程》15:Unix 域协议
Unix 域协议 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 本 ...
- React中render Props模式
React组件复用 React组件复用的方式有两种: 1.render Props模式 2.高阶组件HOC 上面说的这两种方式并不是新的APi. 而是利用Raect自身的编码特点,演化而来的固定编码写 ...
- 2.如何正确理解古典概率中的条件概率《zobol的考研概率论教程》
写本文主要是帮助粉丝理解考研中的古典概率-条件概率的具体定义. "B事件发生的条件下,A事件发生的概率"? "在A集合内有多少B的样本点"? "在B约 ...
- BUUCTF-佛系少年
佛系少年 这题我感觉超扯,不知道当时环境是不是断网的,断网咋解密的出来.. 下载后有个压缩包,带加密的,首先16进制看看是否是真加密 这里可以看到,压缩包数据区这里都是未加密的方式 但是到了压缩包目录 ...
- 一篇文章带你深入浅出Vuex
在写Vuex之前,我们先用一个简单的例子来实现一个小demo 大家都知道Vue的父传子用在很多场景,比如像这样: 父组件: <template> <div id="app& ...
- 记一次排查线上MySQL死锁过程,不能只会curd,还要知道加锁原理
昨晚我正在床上睡得着着的,突然来了一条短信. 啥,线上MySQL死锁了,我赶紧登录线上系统,查看业务日志. 能清楚看到是这条insert语句发生了死锁. MySQL如果检测到两个事务发生了死锁,会回滚 ...
- 抓包整理外篇fiddler———— 会话栏与过滤器[二]
前言 简单介绍一下会话栏和过滤器 正文 在抓包的时候这两个可以说是必用吧. 会话栏: 会话栏我这里介绍根据左边部分和右边部分. 左边部分是一些图标,有些人发现有个习惯,不习惯看图标. 其实说白了,我们 ...