名垂千古的机会到了,一文说清【给开源大项目贡献代码】二三事(github,pr,fork,ci)

简介: 名垂千古的机会到了,一文说清【给开源大项目贡献代码】二三事(github,pr,fork,ci)

aHR0cHM6Ly9jb2RpbmczbWluLm9zcy1hY2NlbGVyYXRlLmFsaXl1bmNzLmNvbS9jb2RpbmczbWluLzIwMjAtMDMtMTQtMDMwMzQwLmpwZw.png

aHR0cHM6Ly9jb2RpbmczbWluLm9zcy1hY2NlbGVyYXRlLmFsaXl1bmNzLmNvbS9jb2RpbmczbWluLzIwMjAtMDMtMTEtMDg0MjM5LmpwZw.png


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


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


aHR0cHM6Ly9jb2RpbmczbWluLm9zcy1hY2NlbGVyYXRlLmFsaXl1bmNzLmNvbS9jb2RpbmczbWluLzIwMjAtMDMtMTQtMDIyNjA5LmpwZw.png


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


fork


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


aHR0cHM6Ly9jb2RpbmczbWluLm9zcy1hY2NlbGVyYXRlLmFsaXl1bmNzLmNvbS9jb2RpbmczbWluLzIwMjAtMDMtMTQtMDIzMDM4LmpwZw.png


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



aHR0cHM6Ly9jb2RpbmczbWluLm9zcy1hY2NlbGVyYXRlLmFsaXl1bmNzLmNvbS9jb2RpbmczbWluLzIwMjAtMDMtMTQtMDIyODMxLmpwZw.png

准备发起PR


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


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

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


aHR0cHM6Ly9jb2RpbmczbWluLm9zcy1hY2NlbGVyYXRlLmFsaXl1bmNzLmNvbS9jb2RpbmczbWluLzIwMjAtMDMtMTAtMTI0MzI1LmpwZw.png


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


image.png



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


image.png


注意要勾选Allow edits from maintainers 允许老外改动你的描述,如果你对你的英语语法和描述有足够的自信,可以不用勾选,但那样项目创建人有一定概率小肚鸡肠不让过。

image.png


自动跑ci 并 修改ci报错


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

image.png

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


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


git commit --amend --signoff


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

aHR0cHM6Ly9jb2RpbmczbWluLm9zcy1hY2NlbGVyYXRlLmFsaXl1bmNzLmNvbS9jb2RpbmczbWluLzIwMjAtMDMtMTAtMTI1MDI0LmpwZw.png


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


git push --force-with-lease origin master


image.png


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


image.png


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


image.png


好了,慢慢等了。


image.png


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


image.png




咦!老外给我回复了。


和老外讨论


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


image.png


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

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

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

image.png

合并进去啦!开心!!


image.png


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


我是你们的朋友机智的小熊,我们下次再见。

相关文章
|
3月前
|
Apache 数据安全/隐私保护 Docker
【开源问答系统】GitHub 14.9k star 的开源问答引擎来了,三分钟搭建完成~~~
Apache Answer 是一款开源问答系统,助力团队将零散知识沉淀为结构化资产。支持 Docker 快速部署、插件扩展、权限控制与多语言,兼具高效搜索、投票排序与私有化部署能力,适用于技术社区、企业知识库与用户支持场景。
578 22
|
3月前
|
人工智能 JavaScript 前端开发
Github 2024-11-04 开源项目周报 Top14
本周GitHub热门项目涵盖屏幕截图转代码、网页监控、低代码开发等。Python与TypeScript主导,亮点项目包括AI生成代码工具、开源社交应用Bluesky及机器人框架LeRobot,展现AI与自动化技术的快速发展趋势。
226 15
|
3月前
|
缓存 自然语言处理 JavaScript
抓紧上车,别再错过啦, Github 开源后台管理平台,Naive UI !!!
naive-ui-pro 是基于 Vue3 + Vite + TypeScript 的免费开源中后台模板,主打“路由插件化架构”,将权限、页签、缓存等功能拆解为可插拔模块,像搭积木一样灵活组装。内置 14+ 插件、Pro Naive UI 组件库与丰富示例,支持移动端适配、多主题、国际化,MIT 许可,开箱即用,助力高效开发。
408 4
|
3月前
|
人工智能 JavaScript Docker
Github 2024-11-11 开源项目周报 Top15
本周GitHub热门项目涵盖多领域:Python与TypeScript领跑,包括屏幕截图转代码、本地文件共享、PDF处理、AI开发代理等。亮点项目如screenshot-to-code、LocalSend、OpenHands及Diagrams,兼具创新与实用性,广受开发者关注。
300 13
|
4月前
|
JSON Kubernetes 安全
找到啦,我们已上车,Github 27000+ star,研发团队必备开源工具项目,真丝滑!!!
Trivy 是一款高效灵活的开源安全扫描工具,支持容器镜像、文件系统、Kubernetes 等多目标扫描,具备快速、易用、集成性强等特点,适用于 DevSecOps 全流程安全检测。
204 0
|
3月前
|
人工智能 JavaScript 前端开发
Github 2024-10-28 开源项目周报 Top15
本周GitHub热门项目涵盖Svelte、Open Interpreter、PowerShell等,涉及Web开发、AI助手、自动化工具等领域,Python、JavaScript为主流语言,展现开源技术活跃生态。(239字)
483 19
|
3月前
|
人工智能 算法 JavaScript
Github 2024-10-14 开源项目周报 Top14
本周GitHub热门项目共14个,Python项目占7席。涵盖算法实现、生成式AI、金融分析、目标检测等领域,包括TheAlgorithms系列、OpenBB金融平台、Ultralytics YOLO11、Manim动画框架等,展现开源技术多元发展态势。
162 8
|
3月前
|
人工智能 Rust JavaScript
Github 2024-10-07 开源项目周报 Top15
本周GitHub热门项目共15个,Python项目占比最高达7个。榜首为Python算法实现集合TheAlgorithms/Python,Star数超17万;其他亮点包括Godot游戏引擎、OpenBB金融平台、ToolJet低代码框架及新兴AI相关项目如Crawl4AI、Llama Stack等,涵盖游戏、金融、AI、理财等多个领域。
170 4
|
3月前
|
人工智能 Rust 算法
Github 2024-09-30 开源项目周报 Top15
本周GitHub热门项目揭晓:Python主导,AutoGPT居首,涵盖AI、编程、数学动画等领域,助力开发者探索前沿技术。
160 4
|
3月前
|
人工智能 JavaScript 前端开发
Github 2024-09-16 开源项目周报 Top14
本周GitHub热门项目涵盖Python、TypeScript、Go等语言,React居首。亮点包括微软PowerToys、Node版本管理器、AI证件照工具HivisionIDPhotos及端侧大模型MiniCPM等。
141 2

热门文章

最新文章