手把手教你,细说向开源项目递交代码的流程

系列文章目录

手把手教你安装Git,萌新迈向专业的必备一步
GIT命令只会抄却不理解?看完原理才能事半功倍!
常用GIT命令详解,手把手让你登堂入室
GIT实战篇,教你如何使用GIT可视化工具
GIT使用需知,哪些操作会导致本地代码变动


在这里插入图片描述
经过前面的学习,相信大家对GIT的已经基本熟悉了。但是笔者也知道,很多同学对向开源项目做贡献感兴趣,开源项目的魅力在于它们能够吸引来自世界各地的开发者协同工作,共同创造出更为强大的代码库。如果你想为一个开源项目作出贡献,那么递交代码就是必须掌握的技能。在这篇博客中,我将会手把手地教你如何向开源项目递交代码

📕作者简介:战斧,从事金融IT行业,有着多年一线开发、架构经验;爱好广泛,乐于分享,致力于创作更多高质量内容
📗本文收录于 GIT 专栏,有需要者,可直接订阅专栏实时获取更新
📘高质量专栏 云原生、RabbitMQ、Spring全家桶 等仍在更新,欢迎指导
📙Zookeeper Redis kafka docker netty等诸多框架,以及架构与分布式专题即将上线,敬请期待


一、选择开源项目

首先,你需要选择一个你想要为其作出贡献的开源项目。你可以在GitHub等代码托管平台上查找符合你兴趣和能力的项目,了解它们的目的、代码等级、许可证、开发人员和社区等信息。

在选择一个项目之前,你应该首先了解它的需求,并检查它们是否与你的专业技能相符合。你还应该考虑项目的长期规划,以便你的工作能够持续地为项目做贡献。

二、两个操作

我们之前的内容,一般都是开发者自己维护的仓库,拥有着诸多权限,可以让开发者随意更改。但是别人的开源项目,你并不会拥有直接更改的权限。所以在代码平台上提供了两个操作

1. fork

fork的定义是指的是将一个开源项目复制到自己的 GitHub 账户下的操作。当你 fork 一个项目时,你就拥有了该项目在你的 GitHub 账户下的一份完整拷贝,可以在此基础上进行修改、测试和实验等。

如 github上的fork位置:

在这里插入图片描述

或者是 gitee 上的也是一样的:

在这里插入图片描述

如果你前面对Git的学习比较认真的话,比较容易想起来一个类似的命令,即git clone。该命令可以帮助你获取代码库,但它们之间有很大的区别

在这里插入图片描述
简单来说,fork 是把开源仓库的内容复制到你的远程仓库,clone 是把你的远程仓库复制到本地仓库。另外需要说明的是,fork 并不是GIT自带的功能,而是像github、gitee 这样的代码托管平台提供的功能,主要作用是在平台上进行协作

2. pull request

与fork相对的,当我们完成一些内容后,需要把我们的内容推送至开源项目中,但是我们并没有推送的权限,所以有了PR(Pull Request),Pull Request是指在GitHub或GitLab等代码托管平台上,开发者把自己修改后的代码提交给项目的管理者,请求他们审核并合并自己的代码的过程

在这里插入图片描述

我们在托管平台上能看到这些 pull requests,如下:

在这里插入图片描述
在这里插入图片描述

当我们点进去后,能看见其他开发者修改的内容及信息

在这里插入图片描述


三、实操

上面已经讲解了两个基本操作,那么现在我们开始手把手教各位如何实际操作。因为是演示,所以笔者自己在gitee上维护一个项目,然后使用小号来进行模拟操作。

1. fork 并 clone

我们先使用小号打开项目页面,然后点击 fork,目标空间当然是小号自己的空间

在这里插入图片描述
等待一会后,我们就能在小号的空间中,看到复制过来的开源项目

在这里插入图片描述

然后我们进行工程的url复制,并将其clone至本地,这里懒得敲命令,使用的是 GIT实战篇,教你如何使用GIT可视化工具 中安装过的 TortoiseGit 工具

在这里插入图片描述

在这里插入图片描述

2. 修改内容并推送

我们对 README 文件进行修改

在这里插入图片描述

然后我们把修改的内容进行提交和推送

在这里插入图片描述

此时我们可以看到提交已经到了远程上

在这里插入图片描述

3. 创建PR

然后我们就可以点击 PR 了

在这里插入图片描述

因为是fork过来的项目,当我们点击PR的时候,源分支和目标分支gitee会自动帮我们填好,如下图,我们只需要填一下PR的标题和描述。

在这里插入图片描述

一般来讲,PR的标题应该简洁明了地概括你所做的修改,可以使用动词+名词的形式描述你的修改操作,例如 “修复某个bug” 或 “添加某个新功能”。
而PR的描述则是详细说明你的修改内容和目的,包括解决了什么问题、采取了什么处理方式,以及对代码或用户的影响等方面。同时,你还可以在描述区域中提供一些相关链接或截图,以便审核者更好地理解你的修改内容

当我们创建了PR以后,就会看到这个页面,提示我们还在评审状态

在这里插入图片描述

4. 管理者评审

此时,如果我们是开源项目的管理者,当我们打开项目主页面时,就能看到这一次的PR了

在这里插入图片描述

当我们点开这个PR进行查看,就可以看到提交的内容

在这里插入图片描述

管理者可以对此次PR进行代码审核,及多种维度的检测。然后点击上面的 “审查通过” 和 “测试通过”。

5. 合并

在对PR进行检测通过后,管理者就可以进行代码合并了,我们因为是演示,所以并没有产生冲突。

在这里插入图片描述

如果PR出现合并冲突时,一般来说有两种做法,一种是管理员来解决冲突。另外一种就是取消当前PR的合并,并要求提交者重新修改,在这种情况下,管理员应该在PR评论中明确指出冲突并提供建议,以便提交者可以重新修改。

在这里插入图片描述
如果选择合并,那么恭喜你,你已经完成了一次递交,成为了该开源项目的贡献者

四、答疑与总结

本次我们以gitee为平台,详细讲解了向开源项目贡献代码的全流程,github也是一样的操作,当然笔者也总结了目前互联网上的一些疑问,在这里也做一个答疑

  • 为什么叫PR(pull request)

如果用过gitLab的同学,可能对另一个类似的词汇有印象。即merge request,一般就是我在 B 分支开发,开发完成后想把 B 的代码合到 A 分支,但我并没有A分支的权限,就发起这样一个请求。其实PR也是一样的,虽然名称不一样,但实际含义相同。我们发起PR的意思就是,请求管理者拉取我们写的代码,然后合并到他们的项目中,最终合并与否是管理者来决定,我们只是请求。

  • 为什么一定要fork,能不能直接clone开源项目,修改后提交并推送?

你没有权限进行push。另外即使你有权限,作为一个社区,我们应该遵循开源协作的标准流程,包括 fork 该项目、clone 代码到本地、在本地修改并提交到 GitHub,最后通过 Pull Request 向原项目管理者申请合并。这样的流程保证了你的身份和代码的原始性,也方便了其他人对你的修改进行审查和协作。

  • 我想成为开源项目贡献者,我能做些什么?

其实能做的还是挺多的,最直接的就是代码方面的优化、bug的修复。如果你觉得这样太难,也可以选择为项目翻译文档或用户界面,或者编写项目的手册之类的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚信科技AntDB数据库 高并发、低延迟、无死锁,深入了解AntDB-M元数据锁的实现

AntDB-M在架构上分为两层,服务层和存储引擎层。元数据的并发管理集中在服务层,数据的存储访问在存储引擎层。为了保证DDL操作与DML操作之间的一致性,引入了元数据锁(MDL)。 AntDB-M提供了丰富的元数据锁功能&#xff0…

c语言-实用调试技巧

什么是bug? 程序中出现的问题 调试是什么?有多重要? 测试的基本步骤:发现程序错误的存在 以隔离、消除等方式对错误进行定位,确定错误产生的原因,提出纠正错误的解决办法,对程序错误予以改正…

云原生之使用Docker部署RSS阅读器Huntly

云原生之使用Docker部署RSS阅读器Huntly 一、Huntly介绍1.1 Huntly简介1.2 Huntly功能2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Huntly镜像五、部署Huntly5.1 创建挂载目录5.2 创建Hun…

气导耳机是什么样的?盘点五款好用的气传导耳机分享

​气传导耳机在运动、户外、办公等场景中具有独特的优势。然而,面对市场上琳琅满目的气传导耳机产品,很多用户不知如何下手。接下来,我将推荐市面上热销火爆,并性能出色、性价比高的气传导耳机给大家,希望大家都能选到…

GMAC接口(5)——LWIP移植

1.LWIP源码下载 官网:https://savannah.nongnu.org/projects/lwip/ 版本:lwip-2.2.0 2.移植 2.1LWIP目录 2.1.1.porttable目录 2.1.1.1.cc.h #ifndef CC_H_ #define CC_H_#define SYS_ARCH_DECL_PROTECT(lev) #define SYS_ARCH_PROTECT(lev) #def…

面试必杀技:Jmeter性能测试攻略大全(第三弹)(脚本开发)

今天是最后一章哦,主要是讲jmeter性能测试脚本相关的。原创不易,点个赞意思一下呗! 一. 脚本开发方式大纲 1、badboy进行录制和导出 badboy下载地址: 链接:https://pan.baidu.com/s/18Po3RssrBRSnn_-xsHop1g 提取码&#xff1…

Linux计划任务

at 参数 日期时间:指定任务执行的日期时间。 在指定时间执行一个任务 -f:指定包含具体指令的任务文件; -q:指定新任务的队列名称; -l:显示待执行任务的列表; -d:删除指定的待执行…

Simulink 封装

快捷键: Edit Mask:CtrlM Look Under Mask:CtrlU 封装之后的模型: Edit Mask界面: 双击模块后的提示界面: 封装的模块内部:

【响应式布局】

响应式布局 1 什么是响应式布局2 响应式布局的5种实现方案2.1 百分比布局2.2 媒体查询布局2.3 rem响应式布局2.4 vw / vh响应式布局2.5 flex弹性布局 1 什么是响应式布局 响应式布局就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互…

完全背包 动态规划 + 一维dp数组

动态规划:完全背包理论基础 每件商品都有无限个!!! (1)0-1背包的核心代码 解决0-1背包问题(方案二):一维dp数组(滚动数组)_呵呵哒( ̄…

【.net core】使用nssm发布WEB项目

nssm下载地址:NSSM - the Non-Sucking Service Manager 配置方式 修改服务在nssm工具下输入命令:nssm edit jntyjr 其中 jntyjr为添加服务时设置的Service name nssm可以设置任何以参数启动的应用程序以服务形式启动,通过设置参数内容启动服务 以上配置等同于执行…

14:00面试,14:06就出来了,这问的谁顶得住啊

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,…

在比特币上使用可检索性证明支付存储费用

我们为用户开发了一种为云存储付费的新方法。 与亚马逊的 S3 等传统云存储相比,用户不必信任服务器。 我们使用比特币智能合约来确保支付取决于服务器的可检索性证明 (PoR),该证明只能在数据仍然可用且需要时可以检索的情况下生成。 可检索性证明 (PoR)…

国际播客日 · 森海塞尔精选播客设备满足各类音频需求

森海塞尔精选播客设备 为庆祝今年的国际播客日,森海塞尔带来一系列适合各类需求和预算的出色音频解决方案 9月30日被定为国际播客日,至今已有九年的时间了。作为庆祝播客力量的全球性节日,国际播客日备受播客听众和创作者喜爱。播客的选择琳琅满目,从真实犯罪案件、阴谋论和名…

如何办一份有价值的企业内刊/报纸?向《华为人》学习就够了

前两天有一个朋友联系华研荟,说他是今年大学毕业加入了一个中型公司,他学的是企业管理,在公司人力资源部门工作。上周老板说公司要办一份自己的内刊,这个工作由人力资源部负责,而人力资源经理就把这个活交给她了。 她…

springcloud:三、ribbon负载均衡原理+调整策略+饥饿加载

Ribbon负载均衡原理 调整Ribbon负载均衡策略 第一种会对order-service里所有的服务消费者都采用该新规则 第二种会针对order-service里某个具体的服务消费者采用该新规则 饥饿加载

混淆技术研究笔记(一)常见工具介绍

混淆技术研究笔记包含多篇内容,记录了一次混淆的研究和应用的过程。 本文首发于 CSDN,随后会发布在 MyBatis 微信公众号,通过公众号可以免费阅读。 最近有一个 Java 的底层框架需要进行混淆(从原始的 Java 项目改造为了 Maven 多模…

logback.xml springboot 项目通用logback配置,粘贴即用,按日期生成

<configuration scan"false" scanPeriod"10 seconds"><!-- 定义日志存放的根目录 --><property name"log.dir" value"./logs" /><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord"clr&q…

究竟是什么样的讲解二分查找算法的博客让我写了三小时???

版本说明 当前版本号[20230926]。 版本修改说明20230926初版 目录 文章目录 版本说明目录二分查找基础版算法描述分步演示情况一&#xff1a;能在有序数组找到待查值情况二&#xff1a;不能在有序数组找到待查值 翻译成代码基础版代码&#xff08;包括测试类&#xff09;疑惑…

分布式微服务架构中的关键技术解析

分布式微服务架构是构建现代应用的理想选择&#xff0c;它将复杂系统拆分成小而自治的服务&#xff0c;每个服务都能独立开发、测试和部署。在实际的开发过程中&#xff0c;如何实现高效的分布式微服务架构呢&#xff1f;下面笔者根据自己多年的实战经验&#xff0c;浅谈实战过…