Github 的 Pull Request 教程
什么是Pull Request
在知乎有一个高赞回答用一个类比的方式解释了什么是PR,这里我就先引述一下,不再重新解释了。
想想我们中学考试,老师改卷的场景吧。你做的试卷就像仓库,你的试卷肯定会有很多错误,就相当于程序里的 bug。老师把你的试卷拿过来,相当于先 fork。在你的卷子上做一些修改批注,相当于 git commit。最后把改好的试卷给你,相当于发 pull request,你拿到试卷重新改正错误,相当于 merge。
PR五步走
正如这个类比中提到的那样,在GitHub如果想要提交一个PR,大致分为一些几步:
- 先fork别人的项目到自己的仓库中去
- clone到本地进行修改,由于是自己的仓库,所以想怎么改都行
- 再修改完bug后,push回自己的仓库
- 如果你觉得自己的修改很完备,那么你就可以Pull Request,相当于请作者看一下自己的修改。
- 最后如果作者也认同这个修改,那么他会Merge到master上,而你也就成了这个项目的contributor。
光说不练假把式,相信点开这个教程的大部分人肯定现在正面对着如何提交PR,那么就和我一起来练练手吧!这里我使用GitHub上很火的一个数据分析教程来做个演示。
第一步:fork项目到自己的仓库中
在项目名称右边有fork键,登陆后点击即可fork仓库。 fork过程中可以看到这么一个图片,完成后将会跳转到你自己的项目分支。 第二步:打开Git Bash或者命令行,将项目下载到本地$ git clone https://github.com/taotianli/Virgilio.git
Cloning into 'Virgilio'...
remote: Enumerating objects: 61, done.
remote: Counting objects: 100% (61/61), done.
remote: Compressing objects: 100% (52/52), done.
remote: Total 1784 (delta 27), reused 34 (delta 9), pack-reused 1723
Receiving objects: 100% (1784/1784), 7.15 MiB | 123.00 KiB/s, done.
Resolving deltas: 100% (824/824), done.
复制代码
你需要将git clone
后的网址换成你自己的仓库,在看到done之后就代表这个仓库已经下载到了本地。 第三步:进入本地文件,并进行相应修改,这里以修改README.md作为演示。
$ cd Virgilio/
git add README.md
git commit -m 'Modefied the README.'
复制代码
第四步:上传到自己的GitHub仓库,并申请Pull Request 上传代码使用git push origin master
命令就可以了,在之后就可以申请PR了。
回到主项目分支上,同时点击Pull Request -> New Pull Request
,最后如果原作者觉得这个修改可以被加到项目中去,那么他就会同意合并,最后图下图所示。 注意:在作者合并之前,你可以做多次修改,在申请PR后只要push回自己的仓库,GitHub会自动记录修改并同步。
最后让我们在重复一下步骤,fork->clone->add&push->PR->merged,你学会了吗?