名垂千古的机会到了,一文说清【给开源大项目贡献代码】二三事(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的整个过程,对远程开发的团队很有用,希望每一个看到这篇文章的人有所收获。


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

相关文章
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
70 3
|
16天前
|
编解码 人工智能 自然语言处理
MaskGCT:登上GitHub趋势榜榜首的TTS开源大模型
近日,香港中文大学(深圳)联手趣丸科技推出了新一代大规模声音克隆TTS模型——MaskGCT。一起看看该模型的一些表现吧!
|
1月前
|
数据采集 应用服务中间件 Go
开源的键鼠共享工具「GitHub 热点速览」
开源的键鼠共享工具「GitHub 热点速览」
|
3月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
123 1
|
3月前
|
存储 安全 Java
【事故】记一次意外把公司项目放到GitHub并被fork,如何使用DMCA下架政策保障隐私
在一次意外中,作者因三年前将测试代码遗忘在GitHub上而遭遇了代码被他人fork的问题。为解决这一危机,作者详细介绍了如何通过GitHub的DMCA下架通知流程安全删除敏感代码,包括处理私人信息和商标侵权的具体步骤。本文不仅提供了实用的操作指南,还强调了及时响应的重要性,帮助读者避免类似风险
37 0
【事故】记一次意外把公司项目放到GitHub并被fork,如何使用DMCA下架政策保障隐私
|
3月前
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
61 0
同步 Github fork 分支
/**************************************************************************** * 同步 Github fork 分支 * 说明: * 由于梦真的github项目更新了,我这边需要重新pull request其commit。
734 0
|
3月前
|
Rust 前端开发 JavaScript
Github 2024-05-20 开源项目周报 Top15
根据Github Trendings的统计,2024年5月20日当周共有15个项目上榜。按开发语言分类,项目数量如下:Python项目5个,TypeScript项目3个,C++项目2个,Jupyter Notebook项目2个,C、Go、Rust和C#项目各1个。介绍了多个值得关注的项目,包括ChatGPT桌面应用程序、Fooocus图像生成软件、Jellyfin媒体系统等。这些项目涵盖了多种功能和技术领域,值得关注和研究。
56 3
|
3月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
93 2
|
3月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
107 1
下一篇
无影云桌面