首页 > 其他分享 >如何在GitHub正确提PR(Pull Requests),给喜欢的开源项目贡献代码

如何在GitHub正确提PR(Pull Requests),给喜欢的开源项目贡献代码

时间:2024-01-07 12:33:06浏览次数:29  
标签:PR Pull GitHub 项目 Bert 代码 提交 分支

最好的中文TTS项目Bert-vits2更新了中文特化分支,但可能由于时间仓促,代码中存在不少的bug,作为普通用户,有的时候也想为自己喜欢的开源项目做一点点贡献,帮助作者修改一些简单的bug,那么该如何开始?

本次我们以Bert-vits2项目为例子,分享正确提交PR(Pull Requests)的方式。

FORK项目

首先面对一个开源项目,作为普通用户我们有三个选项:

点击Watch可以关注该项目,项目有了更新会提醒关注者,点击Star可以给作者鼓励,类似点赞之类的操作,这里最重要的是Fork,可以把项目拷贝一份到自己的项目库中:

在项目列表中可以看到明确标出了该项目是fork自fishaudio/Bert-VITS2项目:

Forked from fishaudio/Bert-VITS2

至此,我们对自己项目列表中的Bert-VITS2项目就有完整的读写和提交权限了。

修改代码

Github默认显示的都是主分支代码,直接修改主分支代码是非常不理智的行为,一般情况下,我们需要修改的是开发分支,这里先切换到中文特化分支上:

随后开始修改代码,这里的bug是2.3版本去掉了clap特征,而中文特化版本又加了回来,但是代码没有正确回退,导致中文特化版本训练的时候会报错:

修改成功后,提交到自己fork的分支上,注意写清楚提交理由。

提交PR

当我们提交了修改后,在项目上方会自动弹出PR窗口:

此时点击Compare & pull request,正式提交PR

提交PR的时候,也可以描述一下此次pull request的具体理由:

这里描述的越清楚,越容易被作者采纳。

作者合并PR的分支

最后,就是等待作者查看PR请求,如果代码修改的比较合理,那么作者就会考虑合并到目标分支:

如果作者认为代码有可取的地方,那么就会手动合并两个分支,也就是把fork的代码,合并到正式项目的指定分支上,如上图所示。

结语

GitHub 中的 Pull Request(PR)合并分支的原理是通过创建分支保护规则来实现的。分支保护规则定义了非项目小组的协作者在推送更改到分支之前必须满足的条件,例如需要通过状态检查或者需要有一个线性的提交历史。这样可以确保在合并 PR 到受保护的分支之前,必须满足一定的条件。

在 GitHub 中,你可以通过创建分支保护规则来强制执行特定的工作流程或要求。这些规则可以限制谁可以推送更改到受保护的分支,以及是否允许强制推送或删除分支。

当你创建一个分支保护规则后,协作者在推送更改或合并 PR 到受保护的分支时,必须满足规则中定义的条件。这有助于确保代码的质量和安全性,特别是在团队协作的情况下。

总而言之,GitHub 中的分支保护规则可以帮助开源团队管理代码的流程和质量,确保在合并非开发小组的代码到指定分支之前,必须满足一定的条件和要求。

标签:PR,Pull,GitHub,项目,Bert,代码,提交,分支
From: https://www.cnblogs.com/v3ucn/p/17950369

相关文章

  • 项目前瞻|Spring AI:在你的Spring应用中使用生成式AI
    过去一年里,ChatGPT和GoogleBard这样的东西出现,为大众带来了生成式人工智能,似乎每个人都在梦想和计划如何在他们的项目甚至日常生活中利用人工智能。如果您是Spring开发人员,您可能想知道如何在Spring应用程序中实现生成式AI。如果是这样,那么接下来这个视频一定适合您。该视......
  • 【2024潇湘夜雨】WIN11_Pro_Dev_23612.1000软件选装纯净版1.06
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_Dev_23612.1000。2.增加部分优化方案,手工精简部分较多。3.OS版本号为23612.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.15.0.5》网卡版、运......
  • Spring中全局捕获数据库唯一约束等异常,返回友好提示给用户
    controller中有如下新增数据的代码@ApiOperation(value="add",notes="新增数据")@PostMapping("add")publicAjaxResultadd(@RequestBodyXxxx){returnAjaxResult.success(xxxService.save(x));}如果想实现数据唯一性检验,并提示用户有如下方法方法一:代码逻辑层面......
  • Proxmox VE 超融合集群销毁Ceph Pool
    作者:田逸(formyz)销毁CephPool的目的一套五节点的ProxmoxVE超融合集群,当初为有效利用资源,配备了Nvme高性能磁盘和大容量的SATA机械磁盘(如图所示),高性能Nvme磁盘用于虚拟机的系统盘、数据库的数据存储盘,而大容量的机械盘则用于存储诸如图片、视频、共享数据等对性能要求不高的场景。......
  • springsecurity 使用浅谈(一)
    1.背景springsecurity框架主要用于Web应用的认证和授权。所谓认证就是验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户。而授权就是经过认证后判断当前用户是否有权限进行某个操作。认证和授权也是SpringSecurity作为安全框架的核心功能。2.前置知识在......
  • RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及事务消息收发、最大重试消费
    欢迎关注公众号:【11来了】发送“资料”可以下载Redis、JVM系列文章PDF版本!作者为在读研究生,目前研二,计划在公众号记录学习常用中间件笔记,以及明年更新面试经历!事务消息收发流程如下:发送给MQ一条任务操作MQ的Broker成功收到后,那么发送方就开始执行原子db业务如果执行原子......
  • PROC HTTP 实现自动下载宏程序依赖
    问题引出我有时候会针对一些具体的场景编写很多宏程序,为了防止单个宏程序过于臃肿,会将重复的代码进行抽取,封装成一个个独立的程序单元。这其实有点类似面向对象中的基类,其他程序都在这些基类上进一步衍生,形成适用不同场景的宏程序。举个例子,我写了一个宏%quantify_multi_test,它......
  • SpringBoot框架中的DAO层、Entity层、Service层、Controller层
    非原创,看了许多篇博客的总结一般的项目模块中都有DAO、Entity、Service、Controller层。 Entity层是实体层,也就是所谓的model,也称为pojo层,是数据库在项目中的类,该文件包含实体类的属性和对应属性的set、get方法; DAO层=mapper层,现在用Mybatis逆向工程生成的mapper层,其实就是......
  • SpringBoot的Controller,Service,Repository层的使用
    找回熟悉的Controller,ServiceController哪儿去了?对于很多习惯了Spring开发的同学来讲,Controller,Service,DAO这些套路突然间都没了会有不适感。其实呢,这些东西还在,只不过对于较简单的情景下,这些都变成了系统背后帮你做的事情。这一小节我们就先来看看如何将Controller再召唤回......
  • spring自动注入中byName和byType
    spring自动注入中byName和byType1,byName:其实byName根据被注入的名称作为bean名称作为依赖查找,并将对象设置到该属性。(根据bean的id进行查找)首先创建Student类:publicclassStudent{  privateStringname;  privateStringid;  @Override  publicStringtoS......