GitHub 提交 PR
本文将引导您通过 Git 贡献 RocketMQ
GitHub 远程仓库
作为先决条件,本节简要说明了使用 Git 贡献 RocketMQ 的原因。如果您有相关知识,可以跳过它
首先,您需要学习 Git 和 GitHub
思考:从开发者的角度来看,您如何与他人协作完成一个项目?
如果您想到的是打包、压缩,然后复制粘贴,那么想象一下将参与者的范围扩展到 10k+ 的级别
这就是远程仓库的意义所在:开发人员可以轻松地从 GitHub 访问仓库代码,并将开发分支提交到远程仓库,以便与他人进行沟通和共享
那么,有了这个公共仓库,接下来呢?
如何下载远程仓库的代码?
如何将开发分支提交到远程仓库?
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
② 创建拉取请求,并在“贡献”下点击“打开拉取请求”
③ 跨分支比较,选择请求分支和开发分支
base repository / base : 请求仓库和请求分支
head repository / compare : 开发仓库和分支
请务必正确选择请求分支和开发分支,并在获得分支所有者授权后才请求合并
④ 使用大写字母填写 PR 摘要,并简要描述 PR 内容
提交 PR 前,请确认以下事项
- A[GitHub Issue]( apache/rocketmq: Apache RocketMQ 的镜像 (github.com) ) 与 PR 对应的 Issue 已创建
- 修改内容符合 编码规范 编程规范
- PR 摘要以[ISSUE #XXX]开头,并简要描述更改需求
- 概述 PR 更改需求、更改日志和验证信息,参考 PR 演示
- 提交包含完整测试用例的内容,并确保基本检查、单元测试和集成测试通过
⑤ 点击“创建拉取请求”,请求合并分支
⑥ 此时,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