【Chapter 7】 接收 Pull Reauest
7.2 采纳 Pull Request 前的准备
-
在本地开发环境中反映 Pull Request 的内容
下面我们来讲解收到 Pull Request后在本地开发环境中进行实际检查的流程。在本示例中,Pull Request 接收方的用户名为 ituring,发送方的用户名为“PR 发送者”。(大致讲下流程)
-
将接收方的本地仓库更新至最新状态
首先,将 Pull Request 接收方的仓库 clone 到本地开发环境中(图7.8左侧)。如果已经 clone 过,那么请进行 pull 等操作更新至最新状态。
图7.8$ git clone git@github.com:ituring/first-pr.git $ cd first-pr
-
获取发送方的远程仓库
将 Pull Request 发送方的仓库设置为本地仓库的远程仓库,获取发送方仓库的数据。
在本示例中,我们将图7.8 右上的仓库设置为远程仓库,进行 fetch。
$ git remote add PR发送者 git@github.com:PR发送者/first-pr.git $ git fetch PR发送者
现在我们获取了 Pull Request 发送方仓库以及分支的数据(PR发送者 /work)。
-
创建用于检查的分支
前面我们只获取了远程仓库的数据,这些数据尚未反映在任何一个 分支中。
因此我们需要创建一个分支,用来模拟采纳 Pull Request后的 状态。由于这是我们第一个 Pull Request,分支名就叫 pr1。这一步相当于图7.9 左侧箭头(checkout)代表的操作。
现在gh-pages与 pr1 分支的内容完全相同。
图7.9$ git checkout -b pr1 Switched to a new branch 'pr1'
-
合并
下面要将已经 fetch 完毕的“PR发送者/work”的修改内容与pr1 分支进行合并。也就是图 7.9 下侧箭头(merge)代表的操作。
$ git merge PR发送者/work
-
删除分支
检查结束后pr1 分支就没用了,可以直接删除。我们切换至pr1 之 外的分支,运行下面的代码。
$ git branch -D pr1
-
7.3 采纳 Pull Request
自动合并:如果 Pull Request 的内容没有问题,大可打开浏览器找出相应的 Pull Request 页面,点击 Merge pull request 按钮,随后 Pull Request 的内容会自动合并至仓库(图 7.10)。
手动合并:由于我们已经在本地构筑了相同的环境,只要通过 CLI 进行合并操作再 push 至 GitHub,Pull Request 中就会反映出 Pull Request 被采纳后的状态(图7.11)。这个状态对应到本示例中就是“PR发送者/ work”分支合并到 gh-pages 分支。
-
合并到主分支
首先切换到 gh-pages 分支
$ git checkout gh-pages
然后合并“PR 发送者 /work”分支的内容。
$ git merge PR送信者/work
-
push 修改内容
现在只剩下push 一步了,不过为保险起见,我们先查看本地与 GitHub 端仓库内代码的差别。
$ git diff origin/gh-pages
确认无误后,进行 push
$ git push
用这种方法处理后,仓库的 Pull Request 会自动从 Open状态变为 Close状态(图 7.12)。现在我们可以去查看网页,已采纳的源代码应该已经反映出来了。
小结:
- 作为仓库的维护者要时刻记得,无法运行的代码绝不可以合入仓 库,否则会失去团队对你的信任。
- 自动合并适用于几行代码的小改动,实际中,使用手动合并较多。
- Pull Reauset 步骤: Fork、clone、branch(修改代码)、提交修改、创建远程分支、确认无误后发送 Pull Request(简要说明)。
- Pull Reauset 前期准备包括: clone、获取远程仓库、branch、检查分支、确认无误后合并、删除分支。
- 采纳 Pull Reauset :自动合并(Pull Request 页面)、手动合并(切换到源文件分支并合并、无误后 push 修改的内容)。
网友评论