什么是Pull Request?

网上有人用老师批改卷子这件事来解释什么是Pull Request,觉得挺形象的,变拿来用了:

你做了卷子(好比你创建了一个github仓库),老师收取你的卷子(好比fork了你的github),然后老师会找出你卷子中的错误,并批改,然后将卷子返还给你(这就是Pull Request),你可以再check批改的地方,以确认是否需要接收老师的纠错(一般老师都是对的)。

上面其实就一次github pull Request的完整流程。回到github,我们演示一个pull request的完整流程:

  1. 先点击下图右上角的“Fork”,来fork你关心的仓库(我们下面把它称作父仓库:https://github.com/SecureSmartContract/SecurityLearningForSmartContract)

    注:当你是这个仓库的Owner时,该"Fork"按钮是虚的,也就是你不能自己Fork自己。

  2. Fork成功后,就会在你的账户下,有个同名的仓库(我们下面把它称作子仓库)

  3. 这个子仓库完全属于你,你可以使用任何git命令对它进行更新与提交。

  • 下面我们修改该仓库的README

  • 提交更新到Github子仓库

  1. 回子仓库,提请Pull Request:
  • 点击“Pull Request” Tab键

  • 点击绿色的“New pull request”

可以看到子仓库与父仓库之间的差别

  • 点击绿色“Create pull request”

  • 选择好创建Pull Request的模式,点击右下角“Create pull request”按钮

注:如果与父仓库的更新则会出底部的提示,如果有冲突则会出现“有冲突的提示”。所以,为了避免冲突(解决冲突往往会带来更多的沟通成本),子仓库在提交更新之前,如果能与父仓库同步最好。

  1. 回到父仓库,我们就可以看到新增了一条pull request请求

  2. 父仓库的owner可选择对该pull request merge的方式,并将该请求的更新提交到父仓库

  3. 然后回到父仓库的代码,可以看到其README更新成与子仓库一样了

fork产生的子仓库如何keep up with父仓库?

可以讲,Pull Request是把fork产生的子仓库的更新,提交到父仓库中去。那反过来,父仓库中其他开发者,或forker更新的内容,如何同步到子仓库中?

这个一般的操作是通过git命令,来达到子仓库与父仓库同步的效果。具体步骤如下:

  1. 增加远程的上游仓库(也就是父仓库)
git remote add upstream https://https://github.com/SecureSmartContract/SecurityLearningForSmartContract
  1. 拉取父仓库的更新到本地
git fetch upstream
git merge upstream/master
  1. 将父仓库的更新push到github的子仓库
git push

注:上面的步骤主要是从原理上来讲的,没有具体操作验证。如果大家有困难,可以在下面留言。如果需求很多,我们可以另开一个博客,专门来细讲这个Topic。

如何查看forker?

一个仓库创建后,一般希望有更多的人fork(让更多的老师帮忙改错,以便提高成绩),有更多的Star(表示有更多人关注)。查看一个仓库,被哪些人同仁fork,与forker互动,往往是有效提高仓库质量,获得更多关注的有效途径。下面我们看看在Github中,如何来查看这些友好的forker。

1.登录到自己的仓库

2.点击顶部“Insights” Tab

3.再点击左边导航栏的“Forks”,就可以查看到你关心的forker了

github pull request那些事相关推荐

  1. 查看某个github commit属于哪一个github pull request

    StackOverflow上有网友问起标题里描述的问题: https://stackoverflow.com/questions/17818167/find-a-pull-request-on-git ...

  2. Github pull request 工作流总结

    github 上面有很多非常不错的开源项目,我们也可以向其贡献自己的代码,那么我们如何提交自己的代码给开源项目呢?这里就要用到 pull request 的提交方式.当然,基于 git 的其他平台也是 ...

  3. IDEA + github pull request + teamcity运用

    首先要来看github工作流的流程,如上图(图为百度). 那么,为什么要有pull request呢.最近有个新的需求,不想要让一个新手直接提交合并代码到master分支.那么 pull reques ...

  4. 手动创建Github pull request

    选择develop分支作为基准分支,再选择一个branch和它做比较: 此时create pull request按钮就可以点击了:

  5. Github: pull request 解决:There isn’t anything to compare

    图源:https://www.jianshu.com/p/671fdcf2b8d4 fork 别人的代码到你的repository git clone < your repository> ...

  6. GitHub 中 Merge pull request 的 3 中选项说明

    Merge pull request 提供了 3 种 merge 方法: Create a merge commit:GitHub 的底层操作是 git merge --no-ff.feature 分 ...

  7. github的pull request是指什么意思?有什么用处

    github的pull request是指什么意思? 来看看某乎某位阿牛的理解,多么的简单粗暴! 我尝试用类比的方法来解释一下 pull reqeust.想想我们中学考试,老师改卷的场景吧.你做的试卷 ...

  8. Github 的 Pull Request 教程

    Github 的 Pull Request 教程 什么是Pull Request 在知乎有一个高赞回答用一个类比的方式解释了什么是PR,这里我就先引述一下,不再重新解释了. 想想我们中学考试,老师改卷 ...

  9. github 修改fork的代码之后如何提交代码并pull request

    官方的解释还是有点模糊,我是参照这篇文章来的. http://www.linuxidc.com/Linux/2012-12/76922.htm 关于git的版本管理的原理,我是从这篇文章里面学习的. ...

最新文章

  1. 在智能家庭用OpenCV实现人员检测
  2. 解决 drupal8 提示“ settings.php ”设置未配置 问题
  3. POS DES MAC 算法
  4. 位运算的那些奇技淫巧 | 掌(装)握(逼)必备,妙解两道算法题
  5. Collections集合工具类的方法_sort(List,Comparator)
  6. IOS开发之表视图(UITableView)
  7. docker 中用docker 启动应用访问docker中的mysql
  8. JavaScript高级程序设计--01
  9. 车辆保险过户所需材料(郑州)
  10. json离线解析格式化工具
  11. EDI X12 标准报文清单
  12. 小女子菜鸟一枚,因本科毕业设计第一次接触安卓开发……图片上传问题求教
  13. 安捷伦 34401A串口通信
  14. QT 对话框添加背景图片的方法
  15. 群晖QuickConnect与DDNS之间有何区别?
  16. 【太虚AR_v0.1】使用教程 | AR录屏
  17. endcap和welltap_Physical only cell的介绍
  18. ajax回调方法名使用什么事件,ajax的回调函数和匿名函数
  19. 北航研究生院--《云计算技术原理》(1)
  20. 原来,PPTV是在筹划国内上市呐!

热门文章

  1. 人类史上首张黑洞照片亮相
  2. 计划完不成,整天学不进去,怎么办?
  3. 头插法、尾插法建立单链表(含详细注释C++)
  4. Python爬虫实例:爬取国内所有医院信息
  5. UEFI secure boot(2)- UEFI variable及签名认证过程
  6. 2021年安全员-A证-主要负责人(广东省)考试题库及安全员-A证-主要负责人(广东省)模拟考试系统
  7. 苹果手机怎么定位安卓手机_苹果手机一定比安卓手机强?我反倒觉得安卓吊打苹果!...
  8. 都21世纪了,还会有人不学C语言吗?
  9. 为女儿认识英文写的一款Flash游戏(简易打字)
  10. kubernetes云原生纪元:资源管理(k8s)Resource(上)