
今天教大家如何给开源项目 提交pr,成为一名开源贡献者。pr是 Pull Request 的缩写,当你在github上发现一个不错的开源项目,你可以将其fork到自己的仓库,然后再改动一写代码,再提交上去,如果项目管理员觉得你的提交还不错的话,就会将你的代码合并,那么你就成为了这个代码的贡献者了。
Fork仓库
首先你需要将目标仓库 fork 到你自己的github上,这里以我最近提交的一个halo主题为例
将fork后的仓库克隆到本地
终端运行以下代码:
# 克隆项目到本地(注意是派生项目的链接,不是原始项目)
git clone git@github.com:iscottt/awesome-halo.git
创建一个新的分支
为了保持工作的整洁,从main分支创建一个新的分支来进行你的修改:
# 创建并切换到本地新分支,分支的命名尽量简洁,并与解决的问题相关
git checkout -b add-theme-vapor
修改代码
在你的本地仓库中进行所需的修改或添加新的内容。
提交修改
代码编写完成后,就可以提交代码了。当然,不同开源项目可能会有自己的提交规范,所以你需要按照对应的规范去提交你的代码。
提示
这步需要注意一下,有些项目更新的会比较频繁。当你做出修改和提交 PR 之前,可能有作者新的提交和 PR 被合并到原项目。如果有这种情况发生,在你工作区的派生项目会显示原项目有更新。
# 当前文件夹位置
# 保存本地修改并将工作目录还原到当前HEAD提交状态
git stash
# 从远程拉取最新的项目代码,将派生项目更新同步到本地
git pull
# 将保存的修改还原回当前工作目录
git stash pop
查看更新后的内容是否和本地修改有冲突,有冲突就解决冲突,完成后就可以提交修改了
# 当前文件夹位置
# 保存本地修改并将工作目录还原到当前HEAD提交状态
git commit -am 'add halo-theme-vapor'
# 推到派生项目远端仓库,因为之前项目分支是在本地创建的,需要带上 '--set-upstream'
git push --set-upstream origin add-theme-vapor
创建合并请求
回到线上派生项目的工作区,会看到新分支和修改的合并提交信息,点击 Compare & pull request
点击 Create pull request ,就行了。不出意外,你的 PR 就提交成功了。只需耐心等待管理员的审核即可。
等待反馈
项目维护者会审查你的PR。他们可能会请求更多信息或对你的PR提出修改建议。根据反馈进行必要的修改,并保持沟通。
完成合并
一旦你的PR被接受,项目维护者会将其合并到项目的 主分支 中。恭喜你,你已经成功对开源项目做出了贡献!
遵循这些步骤,你可以向任何GitHub上的开源项目顺利提交PR。记得保持礼貌和专业,开源社区非常看重合作和尊重。
删除你的分支
这一步不是必须的,只是保持一个规范的开源协作习惯,减少意外提交错误项目分支的情况发生。
来到原项目 Github 主页,找到之前已经合并的提交请求(在关闭的 PR 列表中),点击 Delete branch
# 删除本地分支
git branch -d delete-unused-link
注意
下次在已有的派生项目创建新分支前,要先将原项目的更新同步到派生项目,并将更新后的派生项目拉到(git pull)本地,再重新建立分支(git checkout -b new-branch-name ),再重复上述过程即可。
想再次提交pr
如果你想再次为同一个项目提交PR,通常情况下,不需要删除并重新Fork仓库。相反,你可以更新你的Fork到最新状态,并在此基础上进行修改。这种方式更高效,也保留了你之前的工作记录。以下是详细步骤:
更新你的Fork到最新状态
首先,确保你的本地 主分支 是最新的,这涉及到从上游仓库(原始项目)拉取最新的更改。
切换到你的本地main分支:
git checkout main
拉取上游仓库的最新更改到你的本地main分支:
git fetch upstream
git merge upstream/main
将更新后的main分支推送到你的GitHub Fork:
git push origin main
创建一个新的分支进行工作
创建一个新的分支来处理你想要修复的问题或添加的功能。
git checkout -b YOUR_NEW_BRANCH_NAME
然后重复上述的步骤,对代码进行 修改,提交,推送分支,创建Pull Request 等。