创建拉取请求
本文内容
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
创建拉取请求(PR),以在 Git 存储库 中更改、查看和合并代码。 可以从上游存储库中的分支或从存储库的分支 中的分支创建 PR。 团队可以评审 PR 并提供有关更改的反馈。 审阅者可以逐步执行建议的更改、留下注释,并投票批准或拒绝 PR。 根据分支策略 和其他要求,PR 可能需要满足各种条件,然后你才能完成 PR 并将更改合并到目标分支。
有关 PR 准则和管理注意事项,请参阅关于拉取请求 。
先决条件
访问:
基本访问权限: 要查看或审查 PR,请成为具有至少基本访问权限的 Azure DevOps 项目的成员。
利益干系人访问权限: 对于公共项目,被授予利益干系人访问权限的用户有权访问 Azure Repos。
权限:
已启用 Repos: 您的项目上必须启用 Repos。 如果 Repos 中心和关联的页面未显示,请参阅 如何打开或关闭 Azure DevOps 服务 来重新启用 Repos。
项目会员:
读者安全组: 要想贡献 PR,必须成为读者安全组的成员或拥有相应的权限。
参与者安全组: 若要创建和完成 PR,请成为参与者安全组的成员或具有相应的权限。
工具:
访问:
基本访问权限: 若要查看或审阅 PR,您必须是 Azure DevOps 项目的成员,并且至少具有基本访问权限。 如果你不是项目成员,请添加为成员 。
权限:
已启用 Repos: 您的项目上必须启用 Repos。 如果 Repos 中心和相关页面未显示,请查看 打开或关闭 Azure DevOps 服务 以重新启用 Repos。
读者安全组: 若要参与 PR,您需要是读者安全组的成员或拥有相应的权限。
参与者安全组: 若要创建和完成 PR,请成为参与者安全组的成员或具有相应的权限。
有关权限和访问权限的详细信息,请参阅 默认 Git 存储库和分支权限 和 关于访问级别 。
创建拉取请求
可以从 Azure DevOps 项目网站、Visual Studio 或 Azure DevOps CLI 创建新的 PR。
在 Azure DevOps 项目网站中,可从以下位置创建新 PR:
从“拉取请求”页创建 PR
可以从 Web 上项目的“拉取请求”页为任何分支创建 PR。
在“Repos”>“拉取请求”页上,选择右上角的“新建拉取请求”。
选择包含更改的分支,以及要将更改合并到的分支,例如主分支。
输入您的 PR 详细信息 并创建 PR。
从推送的分支创建 PR
推送或更新功能分支后,Azure Repos 会显示创建 PR 的提示。
在“拉取请求”页上:
在“文件”页上:
选择“创建拉取请求”,转到可在其中输入 PR 详细信息 和创建 PR 的页面。
从链接的工作项创建 PR
可以直接从链接到分支的 Azure Boards 工作项创建 PR。
在 Azure Boards 中,从“工作”视图中的“积压工作”或“查询”中,打开链接到分支的工作项。
在工作项的“开发”区域中,选择“创建拉取请求”。
该链接会将你转到一个页面,你可以在其中输入 PR 详细信息 并创建 PR。
创建拉取请求:
在“Git ”菜单中,选择“管理分支” 。
右键单击一个分支,然后选择“创建拉取请求”。
根据需要编辑源和目标分支,输入标题和可选说明,然后选择 创建 。
Visual Studio 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护 Team Explorer Git 用户界面。 若要使用 团队资源管理器 ,请从菜单栏中取消选中 工具 >选项 >预览功能 >新的 Git 用户体验。 可以通过任一接口交替使用 Git 功能。
若要从 Visual Studio 团队资源管理器创建 PR,请执行以下操作:
从 Visual Studio 连接到你的项目 。
选择“查看”>“团队资源管理器”,打开团队资源管理器。 还可以按 Ctrl +\ ,Ctrl +M 。
从“主页”中选择“拉取请求”,查看由你打开或分配给你的 PR 列表。
在 拉取请求 视图中,选择 新建拉取请求 。
选择源分支和目标分支,输入标题和可选说明,然后选择 创建 。
创建 PR 后,选择“在浏览器中打开”,在 Azure DevOps Web 门户中打开新 PR。
还可以通过右键单击分支名称并选择“创建拉取请求”,从团队资源管理器中的“分支”视图创建 PR。
若要在项目中创建新 PR,请使用 az repos pr create 。 若要在创建后在浏览器中打开 PR,请使用 --open
参数。
az repos pr create [--auto-complete {false, true}]
[--bypass-policy {false, true}]
[--bypass-policy-reason]
[--delete-source-branch {false, true}]
[--description]
[--detect {false, true}]
[--draft {false, true}]
[--merge-commit-message]
[--open]
[--org]
[--project]
[--repository]
[--reviewers]
[--source-branch]
[--squash {false, true}]
[--subscription]
[--target-branch]
[--title]
[--transition-work-items {false, true}]
[--work-items]
参数
参数
描述
--auto-complete
将拉取请求设置为自动完成,并在所有策略通过时合并到目标分支中。 接受的值:false
,true
。
--bypass-policy
绕过任何必需的策略,并在拉取请求可合并后完成该请求。 接受的值:false
,true
。
--bypass-policy-reason
绕过所需策略的原因。
--delete-source-branch
拉取请求完成后删除源分支,并将其合并到目标分支中。 接受的值:false
,true
。
--description
-d
新拉取请求的说明,可以包括 Markdown。 每个值都是一个新行。 例如:--description "First Line" "Second Line"
。
--detect
自动检测组织。 接受的值:false
,true
。
--draft
在草稿模式下创建拉取请求,作为正在进行的工作。 接受的值:false
,true
。
--merge-commit-message
合并提交时显示的消息。
--open
在 Web 浏览器中打开拉取请求。
--org --organization
Azure DevOps 组织 URL。 可以使用 az devops configure -d organization=ORG_URL
配置默认组织。 如果未配置为默认或未通过 git 配置选取,则为必需。示例:https://dev.azure.com/MyOrganizationName/
。
--project -p
项目的名称或 ID。 可以使用 az devops configure -d project=NAME_OR_ID
配置默认项目。 如果未配置为默认或通过 git 配置进行选取,则为必需。
--repository -r
要在其中创建拉取请求的存储库的名称或 ID。 必需参数。
--reviewers
要作为针对新拉取请求的审阅者包含的其他用户或组。 空格分隔。
--source-branch -s
源分支的名称。 示例:"dev"
。
--squash
合并到目标分支时,对源分支中的提交执行 Squash 操作。 接受的值:false
,true
。
--subscription
Azure 订阅的名称或 ID。 可以使用 az account set -s NAME_OR_ID
配置默认订阅。
--target-branch -t
目标分支的名称。 如果未指定,则默认为目标存储库的默认分支。
--title
新拉取请求的标题。
--transition-work-items
当 PR 更改状态时,将链接到 PR 的任何工作项转换为下一个合理的状态。 例如,将“活动”工作项更改为“已解决”。 接受的值:false
,true
。
--work-items
要链接到新拉取请求的工作项的 ID。 空格分隔。
例
以下命令创建从 Fabrikam 存储库的 new
分支到默认 main
分支的 PR,在浏览器中打开 PR,并在表中显示命令输出。 此示例使用默认配置:az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
。
az repos pr create --repository Fabrikam --source-branch new --open --output table
ID Created Creator Title Status IsDraft Repository
---- ---------- ------------------- ---------------------------- -------- --------- ------------
30 2021-10-31 jamalh@fabrikam.com Updated note-new-git-tool.md Active False Fabrikam
可以在创建 PR 时或之后添加许多其他 PR 详细信息。 若要向 PR 添加详细信息、审阅者、工作项和完成选项,请参阅添加详细信息或编辑 PR 。
Azure DevOps CLI 命令不支持 Azure DevOps Server。
使用挑拣添加更新
可使用挑拣将提交从一个分支复制到另一个分支。 与合并或变基不同,挑拣仅引入所选提交中的更改,而不是分支中的所有更改。
要从已完成的 PR 中挑拣更改,请在 PR 的“概述”页上选择“挑拣”。 要从活动 PR 复制更改,请从 PR 的“更多选项”菜单中选择“挑拣”。 此操作会创建包含复制更改的新分支。 然后,可以从新分支创建新 PR。 有关详细说明,请参阅使用挑拣复制更改 。
切换拉取请求的源分支和目标分支
在第一次保存 PR 之前,可以通过选择分支名称旁边的“切换源分支和目标分支”图标来切换 PR 的源分支和目标分支。 PR 处于活动状态后,此图标将消失,但你仍然可以更改 PR 的目标分支 。
使用拉取请求模板
拉取请求模板是一个文件,其中包含在创建 PR 时填充 PR 说明的 Markdown 文本。 良好的 PR 说明告知 PR 审阅者预期的内容,并有助于跟踪添加单元测试和更新文档等任务。 你的团队可以创建一个默认的 PR 模板,该模板将文本添加到存储库中的所有新 PR 说明。 此外,还可以从团队定义的特定于分支的模板或其他模板中进行选择。 有关创建和使用 PR 模板的详细信息,请参阅使用模板改进拉取请求说明 。
如果存储库具有默认模板,则存储库中的所有 PR 在创建时都有默认模板的说明文本。 若要添加其他模板,请选择 添加模板 ,然后从下拉列表中选择模板。 可以在说明中编辑模板文本、删除模板文本或添加其他文本。
创建草稿 PR
如果 PR 尚未准备好进行评审,可以创建草稿 PR 来指示正在进行的工作。 当 PR 准备好进行评审时,可以发布它,然后开始或继续完整的评审过程。
草稿 PR 与已发布的 PR 有以下差异:
生成验证策略不会自动运行。 可以通过选择 PR 中的“更多选项”菜单,手动将生成验证排队。
在草稿模式下,投票处于禁用状态。
不会自动添加所需的审阅者。 通知仅发送给显式添加到草稿 PR 的审阅者。
草稿 PR 显示在 PR 列表中,带有“草稿”徽章。
注意
创建草稿 PR 需要 Azure DevOps Server 2019.1 更新或更高版本。
要创建草稿 PR,请选择“创建”旁边的箭头,然后在创建 PR 时选择“创建为草稿”。 无需使用 WIP 或 DO NOT MERGE 等标题前缀。
显示“创建为草稿 P R”的屏幕截图
准备好评审并完成 PR 时,请选择 PR 中右上角的“发布”。 发布 PR 会分配必需的审阅者、评估策略并启动投票。
要将现有已发布的 PR 更改为草稿,请选择“标记为草稿”。 将 PR 标记为草稿会删除所有现有投票。
要将 PR 设置为草稿,请打开 PR 并选择“标记为草稿”。
若要从 Visual Studio 打开拉取请求,请在 Git 菜单中,选择 <您的 Git 服务> >查看拉取请求 ,然后选择一个拉取请求将其打开。
若要从 Visual Studio 团队资源管理器中打开拉取请求,请在 拉取请求 视图中,右键单击 PR 并选择 在浏览器 中打开。
若要创建 PR 作为草稿,请在创建 PR 时将 --draft
参数设置为 true
。 (需要 Azure DevOps Server 2020 或更高版本。
例如:
az repos pr create --repository Fabrikam --source-branch new --draft true
若要将现有 PR 设置为草稿,请使用 az repos pr update --id <PR Id> --draft true
。
若要从 PR 中删除草稿状态,请将 --draft
设置为 false
。
Azure DevOps CLI 命令不支持 Azure DevOps Server。
添加或编辑拉取请求标题和说明
在“新建拉取请求”页上,输入更改的标题和详细说明,使其他人可以了解更改所解决的问题。 与现有 PR 一样,在新 PR 中,可以在单独的选项卡上看到 PR 中的“文件”和“提交”。 可以添加审阅者、链接工作项以及向 PR 添加标记。
准备好评审更改时,选择“创建”以创建 PR。
显示创建新 P R 的
当你创建 PR 时,如果没有准备好所有工作项、审阅者或详细信息,请不要担心。 创建 PR 后,可以添加或更新这些项目。
编辑 PR 标题和说明
使 PR 标题和说明保持最新状态,以便审阅者可以了解 PR 中的更改。
可以通过选择当前标题并更新文本来更新现有 PR 的标题。 选择 “保存 ”图标以保存更改,或选择 撤消 图标来放弃更改。
通过选择“说明”部分中的“编辑”图标来编辑 PR 说明。
在 Visual Studio 中创建 PR 时,输入更改的标题和详细说明,以便其他人可以看到更改所解决的问题。 使这些字段保持最新状态,以便审阅者可以了解 PR 中的更改。
若要编辑现有 PR 中的标题、说明或任何其他详细信息,请在浏览器中打开 PR。
可以使用 az repos pr create 在 PR 创建期间添加详细信息,或使用 az repos pr update 更新现有 PR 中的详细信息。
使用 az repos pr create
创建 PR 时,请添加更改的 --title
和详细 --description
,使其他人可以了解更改所解决的问题。 --description
参数接受 Markdown 条目,参数中的每个值都是 PR 说明的新行。
例如:
az repos pr create --repository Fabrikam --source-branch new --title "Update the readme" --description "This PR updates the readme." "These are *new* changes."
使这些字段保持最新状态,以便审阅者可以了解 PR 中的更改。 若要更新 PR 的详细信息,请将 az repos pr update
与所需的 PR --id
参数一起使用。
例如,若要更新 PR #21 的标题和说明,请使用:
az repos pr update --id 21 --description "These updates are *no longer new*." --title "Old updates"
Azure DevOps CLI 命令不支持 Azure DevOps Server。
向拉取请求添加审阅者
可以在新的或现有的 PR 的“审阅者”部分中添加审阅者。 您还可以将现有的可选审阅者设为必需审阅者,或者将必需审阅者更改为可选审阅者或将其移除,除非政策规定这些审阅者是必需的。
分支策略可以要求最少数量的审阅者 ,或者在 PR 中自动包括某些可选或必需的审阅者。 不能删除分支策略所需的审阅者。 可以将分支策略可选审阅者更改为必需审阅者,或删除这些审阅者。
若要查看自动添加审阅者的分支策略,请在 PR 概述 页的 审阅者 部分中,右键单击审阅者旁边的 更多选项 。
如果要评审 PR 的用户或组不是项目的成员,则需要先将其添加到项目中 ,然后才能将其添加为审阅者。
向新 PR 添加审阅者:
在“新建拉取请求”页上的“审阅者”下,选择“搜索要添加为审阅者的用户和组”。
输入姓名或电子邮件地址时,下拉列表会显示匹配的用户和组的列表。 从列表中选择名称以添加为可选审阅者。
要添加必需审阅者,请选择“添加必需审阅者”,然后选择“搜索以添加必需的审阅者”以搜索并选择姓名。
向现有 PR 添加审阅者:
在“概述”页的“审阅者”部分中,选择“添加”,然后选择“必需审阅者”或“可选审阅者”。
输入姓名或电子邮件地址时,将显示匹配的用户或组列表。 选择要添加为审阅者的姓名。
要在必需和可选之间更改审阅者,或删除审阅者,请选择审阅者姓名右侧的“更多选项”。 若要查看指定为审阅者的组或团队的成员身份,请选择该组的图标。
若要添加审阅者,请在浏览器中打开 PR,然后在 PR 的 概述 页上进行更新。
可以通过以下方式在创建时向 PR 添加可选审阅者: az repos pr create --reviewer "<Reviewer Name>" "<Another Reviewer>"
。
例如:
az repos pr create --repository Fabrikam --source-branch new --reviewer "[Fabrikam]\Fabrikam Team" "[Fabrikam Fiber]\Web"
若要添加必需审阅者,或在可选和必需之间更改审阅者,请在浏览器中打开并更新 PR。
若要管理现有 PR 的审阅者,请使用 az repos pr reviewer 。
若要向现有 PR 添加审阅者,请使用: az repos pr reviewer add --id <PR Id> --reviewer "<Reviewer Name>" "<Another Reviewer>"
。
若要列出 PR 的审阅者,请使用 az repos pr reviewer list --id <PR Id>
。
若要从 PR 删除审阅者,请使用 az repos pr reviewer remove --id <PR Id> --reviewer "<Reviewer Name>"
。
az repos pr reviewer add --id
--reviewers
[--detect {false, true}]
[--org]
[--subscription]
参数
参数
描述
--id
拉取请求的 ID。 必需的 。
--reviewers
要作为针对拉取请求的审阅者包含的用户或组。 空格分隔。 必需的 。
--detect
自动检测组织。 接受的值:false
,true
。
--org
--organization
Azure DevOps 组织 URL。 可以使用 az devops configure -d organization=<ORG_URL>
配置默认组织。 如果未配置为默认或未通过 git 配置选取,则为必需 。示例:https://dev.azure.com/MyOrganizationName/
。
--subscription
Azure 订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
Azure DevOps CLI 命令不支持 Azure DevOps Server。
将工作项链接到拉取请求
将工作项链接到新 PR:
在“新建拉取请求”页上,在“要链接的工作项”下,选择“按 ID 或标题搜索工作项”。
开始输入工作项 ID 或标题,并从显示的下拉列表中选择要链接的工作项。 按标题搜索会返回按状态筛选的工作项;将排除状态属于状态类别已完成 和已删除 的所有工作项。 这些工作项还按日期和用户进行筛选,仅显示过去 30 天内创建或更新的项目,并且应按当前用户身份创建、分配或授权这些工作项。
将工作项链接到现有 PR:
在“PR 概述 ”选项卡上的“工作项” 区域中,选择 + 。
输入工作项的 ID 或搜索工作项标题。 从显示的列表中选择工作项。
通过选择工作项旁边的 x 图标来删除工作项链接。 删除链接只会删除工作项和 PR 之间的链接。 在分支中创建的链接或从提交创建的链接保留在工作项中。
将工作项链接到 PR:
在 PR 中选择“概述”选项卡。
选择 工作项 区域中的“添加”按钮。
输入工作项的 ID,或搜索具有与文本匹配的标题的工作项。 从显示的列表中选择工作项。 按标题搜索会返回按状态筛选的工作项;将排除状态属于状态类别已完成 和已删除 的所有工作项。 这些工作项还按日期和用户进行筛选,仅显示过去 30 天内创建或更新的项目,并且应按当前用户身份创建、分配或授权这些工作项。
通过选择将鼠标悬停在工作项上时显示的“删除”按钮来删除工作项链接。 删除链接只会删除工作项与 PR 之间的链接。 在分支中创建的链接或从提交创建的链接保留在工作项中。
要链接工作项,请在浏览器中打开 PR,然后在 PR 的“概述”页上进行更新。
可以在创建 PR 时使用 az repos pr create --work-items <Id1> <Id2>
(其中 <Id> 是工作项的 ID)将 Azure Boards 工作项链接到 PR。
例如,以下命令将工作项 #63 和 #64 链接到 new
分支中的新 PR:
az repos pr create --repository Fabrikam --source-branch new --work-items 63 64
若要管理现有 PR 的工作项,请使用 az repos pr work-item 。
若要将工作项链接到现有 PR,请使用 az repos pr work-item add --id <PR Id> --work-items <Id1> <Id2>
。
若要列出链接到 PR 的工作项,请使用 az repos pr work-item list --id <PR Id>
。
若要取消工作项与 PR 的链接,请使用 az repos pr work-item remove --id <PR Id> --work-items <Id1>
。
取消链接只会删除工作项和 PR 之间的链接。 在分支中创建的链接或从提交创建的链接保留在工作项中。
az repos pr work-item add --id
--work-items
[--detect {false, true}]
[--org]
[--subscription]
参数
参数
描述
--id
拉取请求的 ID。 必需的 。
--work-items
要链接的工作项的 ID。 空格分隔。 必需的 。
--detect
自动检测组织。 接受的值:false
,true
。
--org
--organization
Azure DevOps 组织 URL。 可以使用 az devops configure -d organization=<ORG_URL>
配置默认组织。 如果未配置为默认或未通过 git 配置选取,则为必需 。示例:https://dev.azure.com/MyOrganizationName/
。
--subscription
Azure 订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
Azure DevOps CLI 命令不支持 Azure DevOps Server。
使用标记显示重要详细信息并帮助组织 PR。 标记可以向审阅者传达额外信息,例如 PR 仍是一项正在进行的工作,或者是一个即将发布的版本的修补程序。
显示包含标记的P Rs的屏幕截图。
若要在创建 PR 时添加标记,请在 标记 部分中键入标记名称。 创建 PR 后,可以在 标签 部分中管理标签。
向拉取请求添加附件
可以在创建期间或之后将文件(包括图像)附加到 PR。 选择 说明 字段下方的剪纸图标,或直接将文件拖放到 PR 的 说明 字段中。
更改活动拉取请求的目标分支
对于大多数团队,几乎所有的 PR 都面向默认分支,例如 main
或 develop
。 如果有时需要以其他分支为目标,在创建 PR 时很容易忘记更改目标分支。 如果发生这种情况,可以更改活动 PR 的目标分支:
在 PR 的“概述”页上选择右上角的“更多操作”,然后从下拉菜单中选择“更改目标分支”。
在 更改目标分支 窗格中,选择 选择目标分支 ,选择新分支,然后选择 更改 。
通过电子邮件向利益干系人发送拉取请求通知
可以通过电子邮件共享拉取请求,以通知审阅者并与团队成员沟通。 共享 PR:
在 PR 的“概述”页上选择“更多选项”,然后选择“共享拉取请求”。
在“共享拉取请求”屏幕上,通过在“收件人:”字段中键入收件人的姓名并从显示的用户名中进行选择来添加收件人。 还可以删除收件人。
在 注释(可选) 字段中添加一条消息,然后选择 发送 。 收件人将收到一封需要他们注意且链接到 PR 的电子邮件。
注意
如果使用内置电子邮件功能,则只能向项目成员的个人地址发送电子邮件。 不支持将团队组或安全组添加到“收件人:”行。 如果添加系统无法识别的电子邮件帐户,将收到一封邮件,指出一个或多个电子邮件收件人无权读取邮件拉取请求。
后续步骤
相关文章