10分钟了解开源项目PR流程
2024-09-17 15:22:20

由于今年工作相对较清闲,所以闲暇时间想在github参与开源项目。

不过,我以前对于git操作仅限于同组内的项目,很少有跨组合作修改,故此,我不是很了解开源项目的PR流程。

因此,稍微花了两天时间测试和梳理了一下PR流程,写成文档抛砖引玉,供大家参考和拍砖。

正文

这套流程目前已经在github上测试过数次,目前我个人没有遇到什么问题,算是比较完善的流程。

随着后续我对git的熟悉,我后续会不断完善该文档,这里抛砖引玉,大家如果有意见,欢迎在评论区留言。

本文面向有一定git基础知识的朋友,完全不懂git的朋友,最好先学习一下git的基础知识,不用太多,如下列所示,够用就行。

  • 明白git他人仓库和自己仓库的区别
  • 使用git进行项目的下载和提交
  • 明白git分支及如何操作分支合并

好,话不多说,我们直接开始。

fork项目

首先,找到一个你有兴趣贡献的开源项目,可以是GitHub、GitLab或其他代码托管平台上的任何项目。

然后,我们需要fork你感兴趣的这个项目。

“fork”,是指创建一个现有仓库的副本到自己的git账户下。

这个副本通常是在你自己的账户或组织下创建的,这样你就有了原始项目的个人副本,可以在其中自由地进行修改而不会影响到原项目。

当你“fork”一个项目时,会发生以下几件事情:

  1. 你会得到一个与原始仓库完全相同的仓库副本。
  2. 这个副本位于你自己的GitHub、GitLab等代码托管服务的账户下。
  3. 你可以在这个副本上进行任何修改而不影响到原始仓库。

本地开发

在fork了项目之后,我们需要将这个副本下载到本地进行开发,然后在这个副本的基础上进行修改。

这里要注意,我们需要clone的,是已经fork到自己名下的项目仓库,而不是这个原始项目的仓库。

创建分支

我们在clone下来的项目基础上,签出一个分支,为接下来的开发做准备。

同步分支

这里要注意,我们fork过来,默认应该是mastermain分支,我们并没有fork过来其他分支。

因此,我们需要关联原有项目,将源项目的其他分支也同步到自己的库中。

这里以我为例,比如,我这里要提交的项目是taozhi1010/nest-admin这个项目(这是源项目)。

那么,现在将源项目(taozhi1010/nest-admin)同步到自己的fork的项目仓库中(CrazyStudent13/nest-admin)。

1
2
# git remote add 源项目别名(自己随便命名) git提供的ssh地址
git remote add upstream git@github.com:taozhi1010/nest-admin.git

执行这条命令后,你就可以通过名称upstream来引用这个远程仓库了。

例如,如果你想从这个远程仓库拉取更新,可以使用git fetch upstreamgit pull upstream命令;

如果你要推送更改到该仓库,则可以使用git push upstream命令(前提是拥有相应的权限)。

我们这里不做其他操作,先将远端的分支更新到本地。

1
git fetch upstream

将远程仓库(在这里别名为 upstream)的 master 分支合并到你当前所在的分支。

1
git merge upstream/master

提交更改

根据项目的贡献指南,我们开始本地修改代码或文档,这里确保遵循项目的代码规范和风格指南。

在完成修改之后,我们可以使用命令或者图形化的git管理工具,提交内容。

总之,就是如下两个步骤。

  • 添加更改:使用git add .来将所有更改标记为准备提交。
  • 提交更改:使用git commit -m "Your commit message"提交更改,并附上描述性的提交信息。

推送更改到远程仓库

这里注意,推送不是推送到他人的仓库,而是推送到自己的远端仓库。

如之前一样,使用图形化工具或命令,将本地的commit推送到远端仓库。

创建Pull Request (PR)

这时候,我以github为例,你登录到github的界面,打开那个同步过来的项目,你会发现有个非常明显的对比。

这里你点击一下,他会让你推送到源项目,是否要创建一个PR(pull request)。

这里,我们按照要求,填写PR描述,说明所做的更改及其原因。

然后,指定要合并的目标分支,通常是开发分支(dev),也可能主分支(如master或main)。

等待审查

提交后,项目的维护者或其他贡献者会审查你的PR。

他们会决定是否合并你的PR到自己的分支内。

解决反馈

如果收到反馈需要解决某些问题,那我们重新修改代码,再次推送。

合并

一旦你的PR被批准,它会被合并到主分支中。此时,你可以删除自己的功能分支(可选)。

以上就是给开源项目添加PR的一般流程。

不同的项目可能有不同的具体要求,所以请务必阅读项目的贡献指南以获得更详细的说明。

结语

走完上述流程,我们就算是完成一个PR了,如此,我们也算是参与开源项目了。

社区活跃度应该一些面试官比较喜欢的指标,多参与社区内的活跃项目,不仅能见识他人代码的精妙,也能让自己的努力被社区所见证。

因此,我很是推荐大家在开源社区中做出自己的贡献,哪怕只是一点点,都会让社区感到欣喜。

另外,本文由通义千问辅助编写,在一些命令的具体解释上,AI比人强了不少,比搜索引擎更是好用了太多。

不得不感叹,时代的伟力,能赶上AI风靡的大时代,不知道是幸运还是不幸。

当然,AI虽然辅助解释了部分命令,整体流程依然是我亲自把关的。

目前我已经根据这个流程提交了数次开源项目的PR,其中有些已经通过审核,确认整个流程无误,大家可以按照流程放心食用。

参考

【Git】如何给一个开源项目提交代码?Fork、PR一次搞懂!

通义千问