和我比较熟的朋友知道我前几天给prometheus贡献了代码,这是第一次给一个比较大的开源项目贡献代码,后来一了解发现,我滴妈,好多人都不会发起PR请求来合并代码,这次我就好好写写,给大家一个参考。

毕竟没有什么比给开源项目贡献过代码更好的经历了,简历上写上去肯定会获得更多的关注,一起来吧!

其中有三个新 名词 fork pr ci ,不要急,带着问题,我们慢慢来。

fork

第一步,找到你到贡献代码的项目,用Fork按钮,然后项目就会自动拷贝一份到你自己的github仓库。

跑到你的github仓库里可以看到刚刚frok的项目。

准备发起PR

把你的项目clone下来,然后修改代码,再提交(如果有单元测试要完善,不然老外不会让你过的,一些大的开源项目都有单元测试,这是为了保证每个提交都是正常的,无论哪个分支一拉下来都不会报错,不仅节省人力,也体现了专业度)。

commit 结束后推送到远端(如果这些都不会的话,只能下来好好补习下git了)

进入到你的项目里,找到Pull requests(就是我说的pr),新建pr

选择从哪个项目合并到哪个项目,注意箭头的指向

下面的pr描述要改一下,这是老外最直接看到的东西(没想到我菜J的英语老外也能看得懂)

注意要勾选Allow edits from maintainers 允许老外改动你的描述,如果你对你的英语语法和描述有足够的自信,可以不用勾选。

自动跑ci 并 修改ci报错

点完上图右下角的Create pull request,有跑单元测试的脚本就自动开始运行了,他会监测你的每个步骤以及代码逻辑有没有问题,甚至完把这个提交的代码打包到不同的平台去跑测试,这就是 ci,中文是持续集成,现在稍微大点的团队要节省人力都得了解这个。

如上图,我有两个点没有过,我们一个一个来,第一个DCO意思是我没有签名信息完善到commit信息里(不止是装X,也是为了背锅哈哈哈)

回到你的项目里,刚刚 push的分支上,执行下面的命令。

git commit --amend --signoff
  • 1

ok,自动创建了签名信息(注意必须和你的github账号邮箱一致,如果你用的密钥验证的方式 ,可能邮箱是错的,要手动改一下)

然后强制推送到远程,这里相当重要,你千万不要创建新的commit,只针对最后一次提交做事情就好

git push --force-with-lease origin master
  • 1

对于第二个ci问题,查看详情发现是代码风格不规范

IDE自带的format快捷键修复下就好了。按照下面的命令再强制推送一次。

好了,慢慢等了。

等到全部绿色就是所有的测试用例都跑过了

咦!老外给我回复了。

和老外讨论

和他解释了一堆,最后因为老外觉得我要动到用户的配置,而且改动得到的功能点收益不是很大,所以没通过

一旦老外通过了就会合并你的代码啦。

不服了,我改了下代码,去掉了比较大的改动,再来一次

根据老外的要求完善了文档(完善好再commit --amend,再强制push

合并进去啦!开心!!

虽然不是什么大的功能改动,但是这种名垂千古的感觉还是很棒的,这篇文章讲了项目协作发起pr的整个过程,对远程开发的团队很有用,希望每一个看到这篇文章的人有所收获。


本文转载自:机智的小熊

小熊是我比较敬佩的一个师兄,他的博客里面沉淀了很多知识、技巧、感悟等等,相信一定会对你有所帮助。

如何给开源项目贡献代码相关推荐

  1. 给开源项目贡献代码_您可以为开源做出6种非代码贡献

    给开源项目贡献代码 贡献开源! 履历表看起来很棒! 这是可喜的工作! 在您的整个职业生涯中,您可能听说过很多人做出过这些陈述或类似的陈述. 他们没有错-为开源做贡献是一个多方面的有益工作-但是,当软件 ...

  2. 给开源项目贡献代码的经历

    工作好几年了还没有成为一名开源贡献者,实属失败,最近进行了人生中的第一次给开源项目贡献代码,记录一下.温馨提示:文章较长,不想听我啰嗦的,直接看最后总结. 背景 作为一个 技术开发者 怎么能没有属于自 ...

  3. 开源项目贡献代码流程

    原来在github上断断续续给许多项目提交过pr(pull requests),比较有成就感的是参与的datax-web项目,目前已近1.8k star.现将开源项目贡献代码流程成文,方便后续更多的同 ...

  4. 【手把手指导】给开源项目贡献代码

    很多新人学习了技术,但是没有地方施展. 问题不大,找几个开源项目来参加就可以了,需要开源项目磨练的可以联系学委. 本文重点讲解如何快速的给开源项目贡献代码. 首先你必要要有一个GitHub账号(或者G ...

  5. 微软nni_实践空间站 | 为微软官方开源项目贡献代码,你准备好了吗?

    亟需一个契机重新驱动你在冬日沉睡的大脑? 2020 年春季学期微软学生俱乐部实践空间站项目正等待你大展身手! 实践空间站是微软学生俱乐部打造的全学年持续性活动,通过项目导师指导与自主创新结合的方式,帮 ...

  6. 第一次给知名项目贡献代码,有点紧张

    大家好,我是鱼皮的小老弟阿巴,大家也可以叫我小阿巴. 我也对编程非常感兴趣,但还是小白一枚.这几天放假来哥哥家玩,本来想着鱼皮哥哥学计算机.设备多,会带我打打游戏什么的.结果没想到刚到他家,就问我编程 ...

  7. python开源项目贡献_通过为开源项目做贡献,我如何找到理想的工作

    python开源项目贡献 by Utsab Saha 由Utsab Saha 通过为开源项目做贡献,我如何找到理想的工作 (How I found my dream job by contributi ...

  8. 如何在开源社区贡献代码_如何在15分钟内从浏览器获得您的第一个开源贡献

    如何在开源社区贡献代码 Matt Mullenweg, founder of Automattic, recently offered this advice to aspiring develope ...

  9. python开源项目贡献_如何通过为开源项目做贡献来发展自己的职业

    python开源项目贡献 我16岁的儿子Prahlad刚走进我们的公寓. "他说什么???" 我问. "他说'是'." 轻描淡写,玩起来很酷,就像许多青少年与父 ...

最新文章

  1. 软件研发之道——知识产权
  2. 福利 | NVIDIA英伟达免费直播课:带你选择、搭建AI服务器!
  3. mysql 主从单库单表同步 binlog-do-db replicate-do-db
  4. swap 将硬盘变内存
  5. 【记录】idea创建springboot多模块项目
  6. bzoj1015 [JSOI2008]星球大战 并查集
  7. mysql 8.0.11安装教程
  8. python读写磁盘扇区数据_[Win32] 直接读写磁盘扇区(磁盘绝对读写)
  9. 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)
  10. python matrix用法_详解使用python绘制混淆矩阵(confusion_matrix)
  11. PPT如何制作?掌握这几个思维,就可快捷设计制作PPT了
  12. win10设置vmware 虚拟机开机自启动
  13. Python 笔记(18)— 类的私有属性读取和修改方法
  14. Debian11新装系统美化
  15. 文件管理,文件判断,时间戳,通配符类命令
  16. Android动画+自定义Dialog实现闲鱼发布页面动态效果
  17. 最小二乘法的计算过程
  18. 2021-2027全球及中国PCR试管行业研究及十四五规划分析报告
  19. matlab的基本用法---常用的输入输出函数
  20. 【学习笔记 — Flink 处理迟到数据(★)】

热门文章

  1. iCMS的article.admincp.php和content.admincp.php模块存在SQL注入
  2. 5G科普——三大场景
  3. 负载均衡中SNA的ip-can(iscs使用示例i)
  4. 康涅狄格大学计算机科学排名,康涅狄格大学排名计算机科学,必须注意考察
  5. python 3d图形库_PythonOCC 3D图形库学习—导入STEP模型
  6. C++ 6.程序流程结构—选择结构(嵌套if语句、经典问题三只小猪称体重、三目运算符、switch语句)
  7. 安卓个人中心头像模块(从相册选择和照相功能,适配7.0)
  8. Day16-购物车页面-商品列表修改购物车商品的勾选状态
  9. allegro差分信号走线_原创|PCB设计软件allegro16.6演示差分规则的设置
  10. 在ubuntu16.04 64-bit上安装佳能打印机驱动Linux_UFRII_PrinterDriver_V320_us_EN