如何提交拉取请求
假设你在develop分支上编写了一些代码。你已经完成了手头的工作,现在想把它合并到master主分支上。
但你不知道自己写的代码是否足够好。你希望在将代码合并到主分支之前,有人能帮你审查一下。
你可以通过提交拉取请求来实现这一点。
什么是拉取请求?
pull request 是“请求 Git Pull”的缩写。
这可能有点难以理解,所以我们将用类比的方式来解释。
想象一下,你有一箱香蕉要装上船。装船的唯一方法是:
- 你找个人扔下一根绳子
- 你把绳子系在箱子上。
- 他们把箱子拉了起来
当他们把箱子拉上来时,他们会检查你的香蕉是否新鲜。如果他们发现烂香蕉,可能会要求你换一根好的。
他们也可能觉得你种的香蕉都不好吃,然后把它们都扔掉。(但愿这种情况不会发生,对吧?)
在这个比喻中,一箱香蕉代表你开发分支上的代码。船代表主分支。水手的任务是检查你的代码是否足够好,可以合并到主分支上。
这就是拉取请求:在将代码合并到另一个分支之前,请其他人检查你的代码。
我们用的比喻和实际的拉取请求之间的唯一区别在于:你不会让别人帮你扔绳子。你会自己带绳子,在港口把绳子系在香蕉上,然后扔到船上。水手唯一需要做的就是检查香蕉。
这就是我们所说的提交拉取请求。
提交拉取请求有两种方式。具体采用哪种方式取决于您是否拥有代码仓库的写入权限。
当您拥有写入权限时,提交拉取请求
在提交拉取请求之前,我们需要做一些修改,以便有内容可以合并。这里,我们将在代码中添加一个标题:
<!-- The code we're using to submit the pull request -->
<h2>I'm a heading</h2>
你需要将这段代码提交到 develop 分支。然后,你需要将其推送到 git 远程仓库。
它将出现在我在下图高亮显示的部分。
如果看到这条信息,那就太好了。点击它。这样可以省去几个步骤。
如果看不到,可以点击Github仓库顶部的拉取请求选项卡。
然后,点击写着“新建拉取请求”的绿色按钮。
你会看到一个名为“比较更改”的页面。
要创建拉取请求,您需要将基础分支和比较分支设置为以下值:
base:要合并到的分支compare:要从中合并的分支
在本例中,我们要合并到 master 分支,所以我们将设置base为master。我们要从 合并develop,所以我们将设置compare为develop。
选择分支后,GitHub 会显示已提交的记录列表。接下来,您需要点击“创建拉取请求”按钮。
Github 会显示一个页面,上面写着“打开拉取请求”。
注意:如果您看到了我之前提到的“您的分支已于 X 分钟前更新”消息,您将会进入此页面。
您输入的标题将显示在拉取请求标签页中。我们将把它设置为“向索引添加标题”。
对于评论部分,这将是用户点击进入拉取请求后看到的第一条消息。在本例中,我们将显示“我添加了一个标题。请告诉我是否合适?”
添加标题和消息后,您可以点击页面底部的“创建拉取请求”按钮。
现在,如果您点击顶部的拉取请求选项卡,您将看到我们刚刚提交的一个未完成的拉取请求。
如果您拥有仓库的写入权限,以下是如何创建拉取请求的方法。
如果你没有仓库的写入权限,就必须创建一个 Fork。我们先停下来,谈谈什么是 Fork。
什么是叉子?
Fork 不是你正在使用的 Git 客户端。不要混淆!
在 Git 中,fork 指的是基于另一个仓库创建的仓库。
你目前已经学习了分支的相关知识,并且知道可以从另一个分支创建分支。(例如,develop从分支创建分支)。master
同样地,可以从另一个仓库创建一个新的仓库。从另一个仓库创建的仓库称为分支(fork)。
派生出的仓库包含了主仓库(在派生时)的所有内容,包括所有标签和分支。
您拥有此分支仓库的所有权(因此您拥有写入权限)。此分支仓库仍将与主仓库保持同步。您将通过此同步链接提交拉取请求。
让我们看看它在实践中是如何运作的。
提交拉取请求时没有写入权限
注意:您不能 fork 自己的代码仓库。我将使用一个虚拟账户来演示其工作原理。从现在开始,请记住以下两个账户名称:
- 主账号:
zellwk - 虚拟账户:
zellwk2。
(我应该取一个完全不同的名字……但我相信你也能理解。)
要 fork 一个仓库,只需点击仓库右上角的 fork 按钮即可。
fork 完成后,你会看到一个仓库,它看起来(几乎)和你 fork 的源仓库一模一样。不过,有一点不同——如果你查看项目标题,就会发现该项目是从另一个仓库 fork 过来的。
您拥有对该分支仓库的写入权限。
以下是我们从派生仓库提交拉取请求时的操作:
- 创建一个新分支
- 在该新分支中编写代码
- 从该新分支发送拉取请求
但是,在本课中,我不会创建新分支,因为我需要在我的 Git 客户端上设置一个虚拟帐户。(这是一个繁琐的过程)。
所以,这节课我们要develop直接在分支上编写代码。然后,我们会从该develop分支提交一个拉取请求。
index.html在这种情况下,我将在文件中添加一个包含以下 HTML 代码的列表。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
注意:<ul>本例中我没有关闭标签。我们将在下一课审查此拉取请求时发现此错误。
此次更改的提交信息为:Add list。
现在,如果你回到你 fork 的仓库,你应该能看到一个名为“新建拉取请求”的按钮。这个按钮就在切换分支按钮的旁边。
点击这个新建拉取请求按钮来创建拉取请求。
GitHub 会将您带到一个页面,上面写着“打开一个新的拉取请求”。这个页面看起来和您上面看到的“打开一个新的拉取请求”页面一样。
区别在于你需要设置四件事:
- 底座叉
- 基部
- 头叉
- 比较分支
从以上例子,我们可知两件事:
- 该
base分支是您想要合并到的分支。 - 该
compare分支是您要从中合并的分支。
从前面的拉取请求示例中,我们知道base分支是你要合并到的分支,而compare分支是你要从中合并的分支。
这意味着我们应该设置以下内容:
- 底座叉:
zellwk/project - 基础分支:
master - 叉头:
zellwk2/project - 比较分支:
develop
接下来,你需要做的就是写出拉取请求的标题,写出评论,然后点击“新建拉取请求”按钮。
您已提交来自派生仓库的拉取请求。
总结
提交拉取请求时,您需要请其他人审核您的更改,然后再将其合并到分支中。
创建拉取请求有两种方法。具体采用哪种方法取决于您是否拥有代码仓库的写入权限。
如果您拥有写入权限,则可以从存储库页面创建拉取请求。
如果您没有写入权限,则需要将该仓库 fork 到您自己的页面。然后,您可以从您 fork 的仓库创建一个 pull request。
感谢阅读。本文最初发布在我的博客上。如果您想阅读更多帮助您成为更优秀的前端开发人员的文章,请订阅我的邮件列表。
文章来源:https://dev.to/zellwk/how-to-submit-a-pull-request-4j0g













