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

简介: 最好的中文TTS项目Bert-vits2更新了中文特化分支,但可能由于时间仓促,代码中存在不少的bug,作为普通用户,有的时候也想为自己喜欢的开源项目做一点点贡献,帮助作者修改一些简单的bug,那么该如何开始? 本次我们以Bert-vits2项目为例子,分享正确提交PR(Pull Requests)的方式。

github.jpg

最好的中文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的代码,合并到正式项目的指定分支上,如上图所示。

此外,如果PR被采纳还可以从Github获得一个Pull Shark的徽章:

所谓赠人玫瑰,手有余香。

结语

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

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

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

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

相关文章
|
1月前
|
开发工具 git Python
代码管理记录(二):Github代码上传实操
本文是关于如何使用Git将本地代码上传到GitHub的实操指南。介绍了Git的基本概念、安装方法,并通过详细的步骤指导用户从GitHub创建仓库到使用Git命令初始化、添加、提交代码,最终将代码推送到远程仓库。同时,还汇总了一些常见的错误及其解决方法。
35 2
代码管理记录(二):Github代码上传实操
|
3月前
|
存储 安全 API
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
|
3月前
|
JavaScript 前端开发 Java
Github 2024-08-01 开源项目月报 Top17
根据Github Trendings统计,2024年8月共有17个项目上榜。按开发语言分类,项目数量如下:Python项目6个,非开发语言项目与TypeScript项目各4个,JavaScript项目3个,Java、Go及Vue项目各1个。其中,免费编程学习平台freeCodeCamp.org以381,011个Star数领先,提供全栈网页开发和机器学习课程。其他项目涵盖编程书籍、API集合、低代码开发平台等多种资源。
36 1
|
3月前
|
存储 Linux Go
如何在Github上Pull Request的教程
关于如何在GitHub上发起Pull Request(合并请求)的详细教程,包括Fork(分支)、Clone(克隆)、创建新分支、修改代码、提交更改、推送到远程仓库等步骤,并提供了解决权限问题的方法,如创建个人访问令牌(Personal Access Token)。
92 6
|
3月前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
71 0
Github代码仓库SSH配置流程
怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程
这篇文章是一份详细的GitHub使用教程,介绍了如何在GitHub上创建仓库、创建分支、编辑和发布更改内容、发起拉取请求以及合并分支的操作步骤。
怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程
|
3月前
|
人工智能 JavaScript 前端开发
Github 2024-07-01开源项目月报 Top15
根据Github Trendings统计,2024年7月有15个热门项目。按开发语言分类,项目数量如下:Python项目6个,JavaScript项目3个,C++项目2个,PHP、Blade、非开发语言、C#、Lua、Go、MDX、Jupyter Notebook项目各1个。这些项目涵盖技术重建指南、生成式AI教程、模块化GUI、云平台、数据库系统、视频生成模型、AI框架、Shell提示渲染器、Neovim配置、PDF转Markdown工具及语音识别等多种领域和技术。
106 0
|
3月前
|
人工智能 Rust JavaScript
Github 2024-06-01开源项目月报 Top20
根据Github Trendings统计,2024年6月共有20个项目上榜。按开发语言分类,项目数量如下:Python和TypeScript项目各有8项,Jupyter Notebook 3项,HTML、Java、Rust、Vue 和 Batchfile 各1项,C和Svelte也分别有1项。这些项目涵盖多种领域,从AI驱动的应用到游戏开发,反映了开源社区的多样性和创新力。
65 0
|
3月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之从GitHub下载代码失败是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
75 3