拉取请求是什么?

已完成

首先:

  • 查看分支及其对拉取请求的重要性。
  • 定义什么是拉取请求。
  • 了解如何创建拉取请求、查看拉取请求状态以及合并拉取请求。

分支

首先,我们来定义什么是分支、为什么它们对开发人员很重要,以及它们与拉取请求有何关系。

分支是独立的工作区,你可以在其中开展工作,而不会影响存储库中的其他人。 它们允许你在存储库的一个封闭区中开发功能、修复 bug,以及安全地试验新想法。

在新式软件开发中,处理独立分支的开发人员是一个普遍存在的概念。 通过拥有自己的分支,开发人员可以进行更改(称为“提交”),而不必担心其提交如何影响处理自己的分支的其他开发人员

合并分支

虽然让每个开发人员处理独立分支对于个人工作效率很有帮助,但它也带来了新的挑战。 在某些时候,每个开发人员的分支都需要合并到一个公共分支中,例如 main。 随着项目规模的扩大,可能需要进行许多合并操作,并且对每个合并操作进行跟踪和审查变得越来越重要。 需要跟踪项目的多个更改时,可以使用拉取请求。

拉取请求是什么?

拉取请求是记录分支更改并传达开发人员分支的更改已准备好合并到基础分支(主)分支中的一种方法。 通过拉取请求,利益干系人可以审查和讨论提议的更改,以确保基础分支中的代码质量尽可能地保持最高。

为了使两个分支合并,它们必须彼此不同:

  • “比较”分支是开发人员自己的分支,其中包含他们所做的特定更改。
  • “基础”分支(也称为“主”分支)是需要将更改合并到的分支。

“比较”的最常见用途是对分支进行比较,例如,当启动新的拉取请求时。 启动新的拉取请求时,始终会转到分支比较视图。

创建拉取请求

现在,让我们看看如何创建拉取请求!

  1. GitHub.com 上,导航到存储库的主页。

  2. 在“分支”菜单中,选择包含提交的分支

    Screenshot of creating a new branch and naming it.

  3. 在文件列表上方的黄色横幅中,选择“比较和拉取请求”按钮,为关联的分支创建拉取请求

    Screenshot of a yellow text box, highlighting the green compare and pull request button.

  4. 在“基础分支”下拉菜单中,选择要将更改合并到的分支。 然后选择“比较分支”下拉菜单,选择在其中进行了更改的主题分支

  5. 为拉取请求输入标题和说明。

  6. 若要创建准备供评审的拉取请求,请选择“创建拉取请求”按钮。 若要创建草稿拉取请求,请选择下拉列表,然后选择“创建草稿拉取请求”,然后选择“草稿拉取请求”

拉取请求状态

现在来看看拉取请求的不同状态。

  • 草稿拉取请求 - 创建拉取请求时,可以选择创建可供评审的拉取请求,也可以选择创建草稿拉取请求。 无法合并处于草稿状态的拉取请求,系统不会自动请求代码所有者评审草稿拉取请求。

  • 开放的拉取请求 - 开放状态表示拉取请求处于活动状态,但尚未合并到基础分支。 仍然可以进行提交,并与协作者讨论和评审可能的更改。

  • 关闭的拉取请求 - 可以选择关闭拉取请求,不将其合并到基础/主分支。 如果不再需要分支中提议的更改,或者已在另一个分支中提议另一个解决方案,则此选项很方便。

  • 已合并拉取请求 - 已合并拉取请求状态是指来自比较分支的更新和提交已与基础分支相合并。 对仓库具有推送权限的任何人都可以完成合并。

合并拉取请求

  1. 在存储库名称下,选择“拉取请求”

    Screenshot of the top navigation bar of a repo with the Pull request tab highlighted.

  2. 在“拉取请求”列表中,选择要合并的拉取请求。

  3. 向下滚动到拉取请求底部。 根据对仓库启用的合并选项,您可以:

    • 通过选择“合并拉取请求”按钮,将所有提交合并到基础分支。 如果未显示“合并拉取请求”选项,请选择“合并”下拉菜单,选择“创建合并提交”选项,然后选择“创建合并提交”按钮

      Screenshot of the dropdown menu of the green merge pull request button with the Create a merge commit selected.

    • 使用“Squash 和合并”,可以接受所有提交并将其合并为一个提交。 此选项有助于使存储库历史记录更好理解、更易于组织。 选择“Squash 和合并”选项,然后选择“Squash 和合并”按钮

    • 使用“变基和合并”选项,可以在没有提交合并的情况下进行提交。 通过此选项可以保持线性项目历史记录,从而跳过合并。 选择合并下拉菜单,然后依次选择“变基和合并”选项和“变基和合并”按钮

  4. 如果出现提示,请输入提交消息,或接受默认消息。

  5. 如果你有多个电子邮件地址与你在 GitHub.com 上的帐户相关联,请选择电子邮件地址下拉菜单,然后选择要用作 Git 创作者电子邮件地址的那一个。 此下拉菜单中仅显示已验证的电子邮件地址。 如果你启用了电子邮件地址隐私,则无答复 GitHub 电子邮件是默认的提交内容创作者电子邮件地址。

    Screenshot of a commit change with a description box and the drop-down menu of the email to select as the author of the commit.

  6. 选择“确认合并”、“确认 squash 和合并”或“确认变基和合并”。

  7. (可选)可以删除比较分支,使存储库中的分支列表保持整洁。

接下来,完成一个练习,该练习采用你评审的内容并将其应用于现实示例。