跳至主要内容
版本:5.0

GitHub 提交 PR

本文将引导您通过 Git 贡献 RocketMQ

GitHub 远程仓库

作为先决条件,本节简要说明了使用 Git 贡献 RocketMQ 的原因。如果您有相关知识,可以跳过它

首先,您需要学习 Git 和 GitHub

思考:从开发者的角度来看,您如何与他人协作完成一个项目?

如果您想到的是打包、压缩,然后复制粘贴,那么想象一下将参与者的范围扩展到 10k+ 的级别

这就是远程仓库的意义所在:开发人员可以轻松地从 GitHub 访问仓库代码,并将开发分支提交到远程仓库,以便与他人进行沟通和共享

1656601484232

那么,有了这个公共仓库,接下来呢?

如何下载远程仓库的代码?

如何将开发分支提交到远程仓库?

Git 贡献指南

① 将 apache/rocketmq fork 到个人 GitHub 远程仓库

https://github.com/cuser/rocketmq.git # cuser's rocketmq repo[repository] url

注意:cuser 是 GitHub 用户名,Fork 后您可以在个人主页的 Repositories 中找到复制的仓库,并查看地址

② 自己安装 Git 并将其克隆到本地仓库

git clone https://github.com/cuser/rocketmq.git # git clone [repo url]

注意:克隆的本地仓库将使用 GitHub 仓库作为远程仓库,并将命名为 origin

③ 获取开发分支的最新代码

git rebase origin/develop # git rebase [branch]

注意: rebase <branch> 基本术语是基底替换,您可以查看链接的示例了解为什么需要执行此步骤

④ 在本地仓库中进行更改

git checkout -b RocketMQ-Vxx.0 # git checkout [-b] [new-branch]
git add /rocketmq/pom.xml # git add [dir/file]
git commit -a -m "pom" # git commit [-all] [-msg] [message]

注意:参考 Git,使用相对路径切换到与 .git 相同的目录

⑤ 将更改推送到远程仓库

git push --set-upstream apache RocketMQ-Vxx.0   # push branch to https://github.com/cuser/rocketmq-site.git

GitHub 提交 PR

如下:以提交 PR 到 new-official-website 分支为例说明 PR 流程

参考 Git 贡献指南 修改本地仓库中的分支并将其推送到 GitHub 远程仓库

git checkout new-official-website   # git checkout -b new-official-website
git push origin new-official-website # push to https://github.com/cuser/rocketmq-site.git

① 将 GitHub 远程仓库切换到开发分支 new-official-website

② 创建拉取请求,并在“贡献”下点击“打开拉取请求”

③ 跨分支比较,选择请求分支和开发分支

1656580236831

base repository / base : 请求仓库和请求分支

head repository / compare : 开发仓库和分支

请务必正确选择请求分支和开发分支,并在获得分支所有者授权后才请求合并

④ 使用大写字母填写 PR 摘要,并简要描述 PR 内容

1656589498318

​ 提交 PR 前,请确认以下事项

  1. A[GitHub Issue]( apache/rocketmq: Apache RocketMQ 的镜像 (github.com) ) 与 PR 对应的 Issue 已创建
  2. 修改内容符合 编码规范 编程规范
  3. PR 摘要以[ISSUE #XXX]开头,并简要描述更改需求
  4. 概述 PR 更改需求、更改日志和验证信息,参考 PR 演示
  5. 提交包含完整测试用例的内容,并确保基本检查、单元测试和集成测试通过

⑤ 点击“创建拉取请求”,请求合并分支

⑥ 此时,PR 在 apache/rocketmq-site 远程仓库中可见,所有协作者都可以查看 PR 并提出建议

您可以根据评论在本地进行更改并多次提交。有关合并请求和提交更改的信息将同时显示在 PR 页面、Issue 列表和 RocketMQ 邮件列表中,以便提醒提交者及时查看 PR

合并 PR

开源项目开发分支合并由提交者执行。

① 合并贡献者 PR

git checkout develop    # switch to local develop branch
git pull apache develop # fast-forward to current remote HEAD
git pull --squash https://github.com/cuser/rocketmq.git RocketMQ-Vxx.0 # merge to branch

拉取请求合并分支可能包含多个提交。建议使用 --squash 指令将提交压缩为单个提交

在合并之前,务必解决合并冲突并确保当前分支与远程分支同步

请阅读[Git pull]( Git - git-pull 文档 (git-scm.com) ) 以了解快速前进和其他信息

② 合并提交者 PR

如果提交者合并自己的 PR,请运行以下命令[Git merge]( Git - git-merge 文档 (git-scm.com) )

git checkout develop      # switch to local develop branch
git pull apache develop # fast-forward to current remote HEAD
git merge --squash RocketMQ-Vxx.0 # merge to branch

③ 进行定期补丁检查,使用内置测试用例构建项目,并确保修改更改日志

④ 完成上述所有操作后,使用以下说明提交合并,将分支状态反馈给开发者,并关闭 PR

git commit --author="contributor_name <contributor_email>" -a -m "RocketMQ-Vxx.0 description closes apache/rocketmq#ZZ"

有关关闭 PR 的详细信息,请参考 关闭 PR

⑤ 将合并的分支推送到 apache/rocketmq 远程仓库

git push apache develop

⑥ 提交 PR 后,它将保留在 GitHub 远程仓库中,您也可以同时更新您的个人 GitHub 仓库

git push origin develop

注意:squash 会丢弃开发分支的提交信息

拒绝 PR

拒绝 PR:表示不进行拉取或合并,只提交拒绝 PR 消息

git commit --allow-empty -m "RocketMQ-Vxx.0 closes apache/rocketmq#ZZ *Won't fix*"
git push apache develop

在 GitHub 上关闭 PR #ZZ