基于上一节的github-demo项目,假设我们只是一个普通的开发者使用了这个代码库,如何能给它贡献自己的代码呢?为此,我们创建了两个GitHub账号:一个是项目的创建者boxue11,另一个,则是使用者puretears。
创建Pull Request
这部分操作,我们都是以puretears身份完成的。
为了给github-demo贡献代码,我们要先在github-demo的项目页面,点击右上角的Fork,把它复制到自己的仓库。这样,原始的项目中,Fork数字就会变成1:
而puretears自己的GitHub项目中,就会多出来一个github-demo:
这样,我们执行:
git clone https://github.com/puretears/github-demo.git \
github-demo-puretears
把它克隆到本地。在routes.swift中,添加一个新路由来模拟我们贡献的代码:
router.get("info") { req in
return "Display my information."
}
完成后,执行下面的命令提交并推送到GitHub:
git add .
git commit -m "Display my information"
git push -u origin master
这样,我们就把自己的改动推送到了自己Fork出来的仓库:
接下来,为了把这个改动推送到原始的仓库,我们得点击页面上的New pull request按钮,创建一个PR:
在这个页面上,base fork表示我们要请求合并改动的原始仓库,head fork表示我们自己克隆出来修改的仓库。确认好合并信息之后,就点击Create pull request按钮,这时GitHub就会要求我们输入一个合并说明:
完成后,再点击Create pull request按钮,PR就创建好了:
处理Pull Request
接下来,我们以boxue11的身份登录到Github,这时,github-demo项目中,就会看到有一个Pull reqests等待我们处理:
点进去,就会看到关于这个PR是否和当前代码有冲突,具体的改动等信息:
接下来,如果需要和提交PR的人沟通,就可以在页面下边留言,或者关闭这个PR表示拒绝合并:
如果我们决定接受合并,就可以点击上面绿色的Merge pull request按钮,实际上,这个按钮提供了三个选项:
其中:
- Create a merge commit:表示把这个PR作为一个分支合并,并保留分支上的所有提交记录;
- Squash and merge:表示只为这次合并保留一个提交记录;
- Rebase and merge:表示直接把PR中的提交记录合并到base的分支,这里也就是master分支;
这里,我们就选择Create a merge commit,这时GitHub就会让我们再确认一次:
我们点击Confirm merge按钮,合并就算完成了:
这样,作为puretears我们就创建了自己的第一个PR,作为boxue11,我们也处理并接受了给自己项目的第一个PR。