GitHub 提交 PR
本文将指导您如何通过 Git 贡献 RocketMQ
GitHub 远程仓库
作为前提,本节将简要解释使用 Git 贡献 RocketMQ 的原因。如果您已有相关知识,可以跳过。
首先,您需要了解 Git 和 GitHub。
思考:从开发者的角度,如何与他人协作完成一个项目?
如果您想到的是打包、压缩、再复制粘贴,那请您再想一下将参与者范围扩大到 10k+ 级别的情况。
这就是远程仓库的意义所在:开发者可以方便地从 GitHub 获取仓库代码,并将开发分支提交到远程仓库,与他人沟通和共享。
那么,有了这个公共仓库,接下来该怎么做呢?
如何下载远程仓库的代码?
如何提交开发分支到远程仓库?
Git 贡献指南
① fork apache/rocketmq 到个人 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
如下:以向 new-official-website
分支提交 PR 为例,阐述 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
② 创建 pull request,点击 Contribute 下的 open pull request
③ compare across forks,选择请求分支和开发分支
base repository / base : 请求仓库和请求分支
head repository / compare : 开发仓库和开发分支
务必正确选择请求分支和开发分支,并仅在获得分支所有者许可后请求合并。
④ 填写 PR 摘要,大写字母开头,简要描述 PR 内容
提交 PR 前,请确认如下
- A[GitHub Issue]( apache/rocketmq: Mirror of Apache RocketMQ (github.com) ) 对应 PR 已创建
- 修改内容符合 代码规范 编程约定
- PR 摘要以[ISSUE #XXX]开头,并简要描述变更需求
- 概述 PR 变更需求、变更日志及验证信息,参考 PR 示例
- 提交内容需包含完整的测试用例,并确保基础检查、单元测试、集成测试通过
⑤ 点击 "Create pull request" ,请求合并分支
⑥ 此时,PR 已在 apache/rocketmq-site 远程仓库可见,所有协作者可审查 PR 并提出建议
您可以根据评论在本地进行修改并多次提交。合并请求和变更提交的信息会同时显示在 PR 页面、issue 列表和 RocketMQ 邮件列表中,以便及时提醒 committer 审查 PR。
合并 PR
开源项目开发分支合并由 committer 执行。
① 合并贡献者 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
一个 pull request 合并分支可能包含多个 commit。建议使用 --squash
指令将 commit 压缩为单个 commit。
在合并前,务必解决合并冲突并确保当前分支与远程分支同步。
请阅读[Git pull]( Git - git-pull Documentation (git-scm.com) ) 了解 fast-forward 及其他信息。
② 合并 committer PR
如果 committer 合并自己的 PR,运行命令[Git merge]( Git - git-merge Documentation (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
③ 进行常规补丁检查,使用内置测试用例构建项目,并务必修改 changelog。
④ 完成上述所有操作后,按照以下说明提交合并,将分支状态反馈给开发者,并关闭 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 会丢弃开发分支的 commit 信息
拒绝 PR
拒绝 PR:表示不执行 pull 或 merge,只提交拒绝 PR 消息。
git commit --allow-empty -m "RocketMQ-Vxx.0 closes apache/rocketmq#ZZ *Won't fix*"
git push apache develop
在 GitHub 上关闭 PR #ZZ