震惊!原来贡献开源代码这么简单,分分钟上手!

文章目录

  • 前言
  • 一、什么是 Fork 和 PR?
    • 1. Fork(分叉)
    • 2. PR(Pull Request,拉取请求)
  • 二、两种常见的贡献代码方式
    • 1. Fork 后通过 PR 提交代码
    • 2. 直接在项目分支中修改
  • 三、如何 Fork 和发起 Pull Request:详细流程
    • 1. Fork 项目
    • 2. 将项目 Clone 到本地
    • 3. 创建新的功能分支
    • 4. 修改并提交推送代码到远程仓库
    • 5. 发起 Pull Request
    • 6. 等待代码审查并进行修改
    • 6. 同步你的 Fork 仓库
  • 总结


前言

在开源项目中贡献代码不仅能帮助推动项目的发展,同时也能锻炼自己的技术能力,学习到更多优秀的编程实践。无论你是一个初学者还是有经验的开发者,通过贡献开源代码,你都能在协作中成长。本文将详细介绍如何通过 ForkPR 的方式向开源项目贡献代码,并讲解两种常见的代码贡献方式。

在这里插入图片描述


一、什么是 Fork 和 PR?

1. Fork(分叉)

ForkGitHub 等代码托管平台上的一个功能,用来创建某个仓库的完整副本,并将其保存到你的账户中。它的作用是让开发者在原项目基础上自由修改代码,而不会直接影响原项目。

作用

  • 独立的副本:你可以在不影响原项目的情况下,自由修改和实验代码。
  • 贡献代码:通过 Fork,可以修改代码并提交 Pull Request(PR),向原项目贡献代码。
  • 学习和参考:开发者可以 Fork 一些有价值的开源项目,学习其代码结构和编程技巧。

使用场景:通常适用于没有原项目写入权限的开发者。

2. PR(Pull Request,拉取请求)

Pull Request(简称 PR) 是向项目维护者提出合并代码的请求。它允许你将修改后的代码提交给原项目,并等待项目维护者审核和决定是否将其合并到项目的主分支中。

作用

  • 代码审查:通过 PR,项目维护者或团队成员可以审查代码的改动,确保其符合项目的质量标准和代码风格。
  • 协作开发:团队成员可以通过 PR 讨论、建议、修改代码,从而实现更高效的协作。
  • 贡献代码:外部开发者可以通过 PR 向开源项目贡献代码。

使用场景PR 是外部贡献者向开源项目提交修改的主要方式,也是团队内部协作开发的重要机制。


二、两种常见的贡献代码方式

在开源项目中贡献代码,常见有两种方式:

1. Fork 后通过 PR 提交代码

这种方式最为常见,适用于没有写入权限的外部开发者。开发者通过 Fork 项目副本、修改代码并提交 PR 来贡献代码。

2. 直接在项目分支中修改

如果你是项目的核心成员或拥有项目的写入权限,则可以直接在项目分支中创建新的功能分支并提交代码。这种方式适合团队成员协作开发,无需额外 Fork,但也需要通过 Pull Request 进行代码审查。

接下来我们将着重介绍第一种方式,即 Fork 后通过 PR 提交代码的详细流程


三、如何 Fork 和发起 Pull Request:详细流程

1. Fork 项目

首先,找到你想要贡献的开源项目(例如🚪)。在 GitHub 上,进入该项目的页面,点击右上角的 Fork 按钮
在这里插入图片描述
Fork复刻之后,你就会在自己的 GitHub 账户下生成一个该项目的副本仓库🚪
在这里插入图片描述

2. 将项目 Clone 到本地

Fork 完成后,接下来将副本项目克隆到本地,以便进行代码修改。在你的终端中,使用以下命令克隆项目到本地:

git clone https://github.com/你的用户名/项目名称.git

示例:

git clone https://github.com/huahuahua1223/letsmove.git

克隆后,你的本地项目将与 Fork 的副本保持同步
在这里插入图片描述

3. 创建新的功能分支

PS:这步为可选项,也可以直接在副本的主分支上进行修改

为了保持项目的主分支整洁,建议在修改代码之前,先创建一个新的功能分支。使用以下命令创建并切换到新分支:

git checkout -b 新功能分支名

4. 修改并提交推送代码到远程仓库

改动务必遵循项目的代码风格和贡献指南(通常项目仓库的 CONTRIBUTING.md 文件中会有详细说明),修改完成后,先将更改提交到本地 Git,然后将这些修改推送到远程仓库(Fork 的副本)

首先,检查是否连上远程Git副本仓库,再将修改添加到 Git 暂存区并提交,最后,将你的功能分支推送到 GitHub(此步详细教程请看博客🚪):

git remote -v
git add .
git commit -m "简要描述你的修改"
git push origin 功能分支名

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

5. 发起 Pull Request

推送完成后,回到 GitHub 的 Fork 仓库页面,你会看到自己刚才提交推送的代码出现再Fork仓库
在这里插入图片描述

点击如图创建一个拉取请求PR
在这里插入图片描述

选择要合并到的开源项目仓库的分支以及合并进去的本地Fork下来的仓库的分支
在这里插入图片描述

一般正常情况这里会有“创建拉取请求”按钮(这里我没有‘创建拉取请求’按钮是因为我已经合并进去过了)
在这里插入图片描述

在 PR 页面,你需要填写以下信息:

  • 标题:简要描述你的修改。
  • 描述:详细说明你做了哪些修改、解决了什么问题以及为什么需要这些更改。如果是修复某个 issue,请在描述中引用该 issue 编号,如 fixes #123

然后,点击 Create pull request,正式发起 PR
在这里插入图片描述

6. 等待代码审查并进行修改

提交 PR 后,项目的维护者或核心开发者会对你的代码进行审查。他们可能会给出反馈,要求你进一步修改或优化代码。你需要及时响应,并根据反馈进行修改。
如果需要修改,你可以在本地继续修改代码并推送到同一个功能分支,这些更改会自动同步到你之前的 PR。

当 PR 通过审查并被项目维护者接受后,他们会将你的修改合并到主分支中。这时,你的贡献就正式成为了该项目的一部分!!!

6. 同步你的 Fork 仓库

在项目持续开发过程中,原始项目可能会有新的改动。为了保持你的 Fork 项目与原项目同步,你需要定期从原项目拉取更新。具体操作如下:

首先,添加原项目的远程仓库地址:

git remote add upstream https://github.com/原项目/项目名.git

在这里插入图片描述

然后,拉取原项目的最新更新并合并到你的 Fork:

git fetch upstream
git merge upstream/main

在这里插入图片描述

这样就能保证你的 Fork 项目是最新的


总结

通过本文,我们详细介绍了如何通过 ForkPull Request (PR) 方式向开源项目贡献代码,并提供了完整的操作流程。从 Fork 仓库、克隆到本地、创建功能分支、提交代码到发起 PR,再到同步原项目的步骤,逐步讲解了每个环节的操作方法与注意事项。希望这篇文章能帮助你在开源社区中顺利贡献代码并提升协作开发的能力。如果有任何问题或想法,欢迎在评论区交流探讨!🌹

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

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

相关文章

高效车辆管理:SpringBoot实现指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理车辆管理系统的相关信息成为必然。开发合适…

蜗牛兼职网的设计与实现(论文+源码)_kaic

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,蜗牛兼职网当然也不能排除在外。蜗牛兼职网是以实际运用为开发背景,运用软件工程原理和开发方法&#xff0c…

Unity开发Hololens项目

Unity打包Hololens设备 目录Visual Studio2019 / Visual Studio2022 远端部署设置Visual Studio2019 / Visual Studio2022 USB部署设置Hololens设备如何查找自身IPHololens设备门户Unity工程内的打包设置 目录 记录下自己做MR相关:Unity和HoloLens设备的历程。 Vi…

智能家居的“眼睛”:计算机视觉如何让家更智能

引言 在不远的未来,当我们走进家门,灯光自动亮起,空调已经调至最舒适的温度,甚至音乐也播放着我们最喜欢的歌曲。 这一切,都得益于智能家居系统的发展。而在这个系统中,计算机视觉技术扮演着至关重要的角色…

opencv 图像BGR三通道分离 split 与 合并 merge -python 实现

图像BGR三通道分离 split 与 合并 merge 会在图像预处理和图像增强中使用。 具体代码如下: #-*-coding:utf-8-*- # date:2021-03-21 # Author: DataBall - XIAN 1、将彩色图片 BGR 三通道分离(注意观察 B、G、R 单通道图像素的明暗)2、将3个…

Java知识巩固(六)

什么是可变长参数? 从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。就比如下面这个方法就可以接受 0 个或者多个参数。 public static void method1(String... args) {//...... } 另外&am…

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具,制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…

分享一套SpringBoot+Vue民宿(预约)系统

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue民宿(预约)系统,分享下嘿嘿。 项目介绍 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难&#xff0c…

qt QGraphicsEffect详解

一、QGraphicsEffect概述 QGraphicsEffect通过挂接到渲染管道并在源(例如QGraphicsPixmapItem、QWidget)和目标设备(例如QGraphicsView的视口)之间进行操作来更改元素的外观。它允许开发者为图形项添加各种视觉效果,如…

Redis——事务

文章目录 Redis 事务Redis 的事务和 MySQL 事务的区别:事务操作MULTIEXECDISCARDWATCHUNWATCHwatch的实现原理 总结 Redis 事务 什么是事务 Redis 的事务和 MySQL 的事务 概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行 Redis 的事务和 MySQL 事务的区别:…

无人机之融合集群技术篇

无人机的融合集群技术是一个涉及多个领域的复杂技术体系,它结合了无人机技术、自组网技术、集群控制技术以及反制设备等多个方面,旨在实现多架无人机之间的协同、编队、信息共享、任务分配和高效作业。 一、无人机自组网技术 无人机自组网技术是一种利用…

UDP/TCP协议

网络层只负责将数据包送达至目标主机,并不负责将数据包上交给上层的哪一个应用程序,这是传输层需要干的事,传输层通过端口来区分不同的应用程序。传输层协议主要分为UDP(用户数据报协议)和TCP(传输控制协议…

1. 安装框架

一、安装 Laravel 11 框架 按照官方文档直接下一步安装即可 1. 安装步骤 2. 执行数据库迁移 在.env文件中提前配置好数据库连接信息 php artisan migrate二、安装 Filament3.2 参考 中文文档 进行安装 1. 安装 拓展包 composer require filament/filament:"^3.2" -W…

cisco网络安全技术第3章测试及考试

测试 使用本地数据库保护设备访问(通过使用 AAA 中央服务器来解决)有什么缺点? 试题 1选择一项: 必须在每个设备上本地配置用户帐户,是一种不可扩展的身份验证解决方案。 请参见图示。AAA 状态消息的哪一部分可帮助…

java基于SpringBoot+Vue+uniapp微信小程序的自助点餐系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

几何完备的3D分子生成/优化扩散模型 GCDM-SBDD - 评测

GCDM 是一个新的 3D 分子生成扩散模型,与之前的 EDM 相比,GCDM 优化了其中的图神神经网络部分,使用手性敏感的 SE3 等变神经网络 GCPNET 代替了 EDM 中的 EGNN,让节点间消息传递、聚合根据手性不同而进行。本文对 GCDM-SBDD&#…

Linux操作系统与windows无法相互复制问题

请先看完此文在进行操作!!! 对于无法复制我们逐层分析: 1.为什么无法复制是不是少了什么工具(open-vm-tools-destop) 上网查阅可以看到如下 2.在此之前我的虚拟机装完Ubuntu 16.04的linux系统无法进行apt update(参考一下) li…

【ARM】MDK-Flex服务管理软件使用说明

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录MDK网络版部署工具Imtools.exe 的各个界面中相关配置的功能说明 2、 问题场景 解决客户咨询,该服务管理软件如何使用,为客户使用服务管理软件后期自行维护增加一定指导作用。 3、软硬件环…

JCO发表加州大学团队最新医学AI研究,从常规HE染色切片预测同源重组缺陷和铂类药物反应|顶刊精析·24-10-18

小罗碎碎念 这篇文章是关于一项名为DeepHRD的深度学习平台的研究,该平台能够从常规的苏木精-伊红(H&E)染色组织切片中预测同源重组缺陷(HRD)和铂类药物反应。 作者角色姓名单位第一作者Erik N. Bergstrom加州大学圣…

RTThread-Nano学习二-RT-Thread启动流程

一、简介 上一章,我们已经了解了如何通过MDK来移植RTT,不熟悉的可以看如下链接:RTThread-Nano学习一-基于MDK移植-CSDN博客本章我们就来继续了解一下,RTT的启动流程。 二、启动流程 官方给了一幅非常清晰的启动流程图&am…