拉取请求是什么?

已完成

首先:

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

分支

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

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

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

合并分支

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

拉取请求是什么?

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

拉取请求比较两个分支之间的更改:

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

启动拉取请求时,GitHub 会自动显示分支比较视图。

创建拉取请求

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

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

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

    创建新分支并将其命名的屏幕截图。

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

    黄色文本框的屏幕截图,其中突出显示了绿色比较和拉取请求按钮。

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

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

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

拉取请求状态

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

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

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

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

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

合并拉取请求

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

    存储库顶部导航栏的屏幕截图,其中突出显示了“拉取请求”选项卡。

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

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

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

      绿色的合并拉取请求按钮下拉菜单的屏幕截图,其中选择了“创建合并提交”。

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

    • 使用“变基和合并”选项,可以在没有提交合并的情况下进行提交。 这会维护线性项目历史记录。 选择合并下拉菜单,然后依次选择“变基和合并”选项和“变基和合并”按钮

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

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

    提交更改的屏幕截图,其中包含说明框和用于选择提交作者的电子邮件下拉菜单。

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

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

高级拉取请求选项

除了创建和合并拉取请求之外,还有一些高级选项可帮助团队维护高质量的代码。

请求审阅者

可以请求特定协作者查看拉取请求。 只有对存储库具有写入访问权限的协作者才能选择为审阅者。 这有助于确保在合并之前由正确的人员查看更改。

  1. 创建或查看拉取请求时,请在右侧边栏中找到“审阅者”部分。
  2. 搜索并选择对存储库具有写入访问权限的协作者的 GitHub 用户名。
  3. 所选审阅者将收到查看拉取请求的通知。

所需的评审和分支保护规则

某些存储库使用分支保护规则,这些规则要求拉取请求满足某些条件,然后才能合并这些规则。 常见要求包括:

  • 至少一个来自另一个协作者的批准评审。
  • 传递所有必需的状态检查,例如持续集成(CI)工作流。

如果拉取请求不符合这些要求,则在满足所有条件之前,将禁用合并按钮。

可以在“合并”部分的“拉取请求”页底部看到存储库所需的规则。

这些规则通常由分支保护设置中的存储库管理员配置。

状态检查和持续集成 (CI)

如果存储库使用 GitHub Actions 或其他 CI 系统,则拉取请求可能会在进行更改时自动运行状态检查。 示例包括:

  • 运行单元测试
  • 检查代码格式
  • 验证安全扫描

拉取请求通常必须传递所有必需的状态检查,然后才能将其合并到基分支中。 拉取请求页上直接显示失败的检查。

使用星形保存存储库

找到想要稍后轻松重新访问的存储库时,可以在 GitHub 上 对其进行定型 。 由存储库主编将其保存到个人收藏夹列表中,并向存储库维护人员展示你的欣赏。

为存储库提供星型:

  1. 导航到上 GitHub.com存储库页。
  2. 在右上角,选择 “星形 ”⭐按钮。

可以通过选择个人资料图片和 星形来查看所有已星标的存储库。

键盘快捷方式

GitHub 提供了许多键盘快捷方式,可帮助你更快地完成工作。

查看所有可用的快捷方式:

  • 在 GitHub.com 上按 ? 任意位置。

你将看到用于导航问题、拉取请求、存储库等的快捷方式列表。

使用命令面板

GitHub 上的 命令面板 可帮助你快速跳转到页面、运行常见作或搜索存储库,而无需手动关闭键盘。

打开命令面板:

  • Ctrl+K (Windows/Linux) 或 ⌘+K (Mac)。

可以开始键入“创建拉取请求”、“查看问题”或“切换分支”等作,以立即转到所需位置。

应用所学知识

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