《GitHub入门与实践》学习笔记(windows)-第6章 尝试Pull Request
文章目录
一、Pull Request 的概要
1.什么是 Pull Request
- Pull Request 是自己修改源代码后,请求对方仓库采纳该修改时采取的一种行为。
- 在 GitHub 上发送 Pull Request 后,接收方的仓库会创建一个附带源代码的 Issue,我们在这个 Issue 中记录详细内容。这就是 Pull Request。
- Pull Request 在网络上也常常被简称为 PR。
二、发送 Pull Request 前的准备——操作开始
1.整体框架
2.需要操作的仓库源代码
(1)源代码:https://ituring.github.io/first-pr/
(2)该网站的源代码已经在 GitHub 上公开 ,通过 GitHub 的 GitHub Pages 功能发布:https://github.com/ituring/first-pr
3.首先Fork仓库
各位请访问仓库页面,点击 Fork 按钮创建自己的仓库(图 6.2)。
4.把fork后的仓库clone下来
说明:
- first-pr 目录下会生成 Git 仓库。
- 这个仓库与我们 GitHub 账户下的first-pr 仓库状态相同。现在只要在这个仓库中修改源代码进行 push,GitHub 账户中的仓库就会被修改。
5.创建一个特性分支,并在特性分支中操作
(1)为何要在特性分支中进行作业??
- 各位请养成创建特性分支后再修改代码的好习惯。
- 在 GitHub 上发送 Pull Request 时,一般都是发送特性分支。
- 这样一来, Pull Request 就拥有了更明确的特性(主题)。让对方了解自己修改代码的意图,有助于提高代码审查的效率。
(2)查看当前分支
(3)创建特性分支
注意:可以看出Github上的远程仓库的分支名叫:origin,所以后面才使用git push -u origin work
(4)添加代码
(5)提交修改
这里用到了:
- git diff命令,用来查看修改是否已经正确进行
- git add 和git commit -m这俩指令
(6)将特性分支push到Github端的远程仓库
注:当作是再次开发的过程
三、发送Pull Request(在Github上操作)——操作结束
(1)参考图 6.3,登录 GitHub 并切换至 work 分支。
(2)点击分支名左侧的绿色按钮,会跳转至查看分支间差别的页面(图 6.4)。
(3)确认没有问题后,点击 Send pull request 按钮。这样一来, Pull Request 的目标仓库中就会新建 Pull Request 和 Issue,同时该仓库的管理者会接到通知。(现在github改成了:creat pull request)
(4)点击自己发送的 Pull Request 后会进入如图 6.6 的页面,管理者对 Pull Request 的评论会发到这里。
注:指的是https://github.com/ituring/first-pr的pull request,fork的原地址去查看
四、让 Pull Request 更加有效的方法
1. 在开发过程中发送 Pull Request 进行讨论
(1)只要在想发起讨论时发送 Pull Request即可,不必等代码最终完成。即便某个功能尚在开发之中,只要在 Pull Request 中附带一段简单代码让大家有个大体印象,就能获取不少反馈。
(2)另外还有一件事要记住,就是千万不要在 Pull Request 中添加无关的修改。
2.不进行 Fork 直接从分支发送 Pull Request
(1)一般说来,在 GitHub 上修改对方的代码时,需要先将仓库 Fork 到
本地,然后再修改代码,发送 Pull Request。
(2)如果用户对该仓库有编辑权限,则可以直接创建分支,从分支发送 Pull Request。
这样,成员在有需要时就可以创建自己的分支,然后直接向 master分支等发送 Pull Request。
五、如何让仓库保持最新分支状态:git fetch
注:fetch与pull的不同
- fetch的使用,是因为是fork的仓库;而pull不是fork的仓库哦。
- 这俩都是更新分支状态,而不是仓库里面的文件!
- 具体表现如下:pull是使得自己的本地仓库和自己的远程仓库的分支状态保持一致,而fetch是让自己的fork后的仓库与别人的原仓库的分支状态保持一致。
(1)Fork 或 clone 来的仓库,一旦放置不管就会离最新的源代码越来越远。
(2)通常来说 clone 来的仓库实际上与原仓库并没有任何关系。所以我们需要将原仓库设置为远程仓库,从该仓库获取(fetch)数据与本地仓库进行合并(merge),让本地仓库的源代码保持最新状态(图 6.8)
1.首先fork原仓库,然后到自己的仓库中进行clone
注意:原仓库的地址是:git://github.com/octocat/Spoon-Knife.git
fork后的地址是: [email protected]:hirocastest/Spoon-Knife.git
2.给原仓库设置名称
今后,我们的这个仓库将以 upstream 作为原仓库的标识符。