GitHub中发起PR(pull Request)
PR是为了贡献代码:
贡献代码,通俗的说,就是自己修改了代码,希望合并到别人的Repository(仓库)中。将自己的智慧贡献给开源社区。
一.贡献代码:
1.第一步:Fork
在GitHub社区闲逛时,看中了某个项目代码,如:spring-projects/spring-framework,点击页面Fork按钮,会生成一个自己的Repository(仓库:thinkingfioa/spring-framework),如下图:
2.第二步:修改
Fork成功后,通过git clone、修改、commit、push等操作后,将修改的内容,提交到自己仓库(thinkingfioa/spring-framework)中。如果对git clone、commit和push不知道的,自行百度。如下图:
3 第三步:请求合并代码(Pull Request)
在2步骤时,我们修改了自己的仓库(thinkingfioa/spring-framework)代码。我们希望贡献自己的一份力量,将修改的Commit也提交到别人的仓库(spring-projects/spring-framework)中。则要进行Pull Request。
3.1 创建PR
3.2 Create pull request
请特别注意下图中标红的部分,不能搞反了。点击: Create pull request 绿色按钮,完成提交PR。
3.3 等待
提交PR完成后,等待对方仓库(spring-projects/spring-framework)的管理员审核,如果他同意,则贡献代码完成了。
二.同步最新代码
PR除了贡献代码外,还可以同步对方最新代码。通俗的说,fork某个仓库(如: spring-projects/spring-framework)代码一段时间后,为了同步自己仓库(thinkingfioa/spring-framework)和对方仓库(spring-projects/spring-framework)代码,保证自己仓库代码是最新版本。
2.1.1 Create pull request
这一步和上面3.2一样的,只是要注意箭头,哪个仓库合并哪个仓库。请自习注意下图标红部分
2.1.2 点击绿色按钮,完成代码同步
摘自:https://blog.csdn.net/thinking_fioa/article/details/79516352?tdsourcetag=s_pctim_aiomsg
GitHub之接收、处理Pull Request
1.创建一个仓库来演示下。
假设创建仓库的人称为:“老大”
2.成员Fork后修改
成员x695 在自己的网页上fork这个仓库,然后git clone到本地,然后创建特性分支,基于特性分支修改完成提交,push到origin 远程仓库
git push origin (master(本地):master(远程) )
3.成员发PR到老大
4.老大登陆自己的账号,到PR页签
5.老大在本地的检查
为了防止这个成员乱改,如果不检查可以直接进行步骤6老大还要检查下假如还要用于演示的话,老大就要把代码拉到本地了,看看修改后有啥区别
- git clone 自己创建的项目
- git remote add stream 项目成员的仓库/获取项目成员仓库设置为本地仓库的远程仓库
git fetch 获取项目成员的仓库数据 - 将成员的仓库和分支数据全部拉到自己本地后,创建一个用户检查的分支 pr1,并进入这个分支
将项目成员的number1 分支和自己的分支pr1进行合并 git merge stream/number1 - 这样一来分支pr1就和项目成员的分支number1一样了,检查完毕,进行删除 git branch -D pr1
6.老大合并或评论PR
点击 add number1 可以回复评论,然后也可以直接点击 merge pull request 通过
- 老大如果不愿意登陆网页,也可以在本地进行如下操作
- 在步骤5中已经完成了,前2步的前提下进行下一步
- git checkout master,切换到主分支
- git merge stream/number1 将成员的分支合并到主分支
- push前进行检查,git diff oragin/master 看看本地合并后的仓库和远端的有啥区别
- 如果确认无误直接进行git push 就可以了
- 完成上面的5步之后,仓库的Pull Request 会自动成Open状态变成Close 状态。
摘自:https://blog.csdn.net/x6_9x/article/details/50902777
Github官方文档
Author: Mrli
Link: https://nymrli.top/2019/03/28/学会Pull-request/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.