创建拉取请求
本文内容
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
创建更改、评审和合并 Git 存储库 中的代码的拉取请求 (PR)。 可以从上游存储库中的分支或从存储库的分支 中的分支创建 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 版本控制体验,同时保留团队资源管理器 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 Server 不支持 Azure DevOps CLI 命令。
使用挑拣添加更新
可使用挑拣将提交从一个分支复制到另一个分支。 与合并或变基不同,挑拣仅引入所选提交中的更改,而不是分支中的所有更改。
要从已完成的 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 等标题前缀。
准备好评审并完成 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 Server 不支持 Azure DevOps CLI 命令。
添加或编辑拉取请求标题和说明
在“新建拉取请求”页上,输入更改的标题和详细说明,使其他人可以了解更改所解决的问题。 与现有 PR 一样,在新 PR 中,可以在单独的选项卡上看到 PR 中的“文件”和“提交”。 可以添加审阅者、链接工作项并向 PR 添加标记。
准备好评审更改时,选择“创建”以创建 PR。
如果在创建 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 Server 不支持 Azure DevOps CLI 命令。
向拉取请求添加审阅者
可以在新的或现有的 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 Server 不支持 Azure DevOps CLI 命令。
将工作项链接到拉取请求
将工作项链接到新 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 Server 不支持 Azure DevOps CLI 命令。
使用标记显示重要详细信息并帮助组织 PR。 标记可以向审阅者传达额外信息,例如 PR 仍是一项正在进行的工作,或者是一个即将发布的版本的修补程序。
要在创建 PR 时添加标记,请在“标记”部分键入标记名称。 创建 PR 后,可以在“标记”部分中管理标记。
向拉取请求添加附件
可以在创建期间或之后将文件(包括图像)附加到 PR。 选择“说明”字段下的回形针图标,或将文件直接拖放到 PR 的“说明”字段中。
更改活动拉取请求的目标分支
对于大多数团队,几乎所有的 PR 都以默认分支(例如 main
或 develop
)为目标。 如果有时需要以不同的分支为目标,很容易在创建 PR 时忘记更改目标分支。 如果发生这种情况,可以更改活动 PR 的目标分支:
在 PR 的“概述”页上选择右上角的“更多操作”,然后从下拉菜单中选择“更改目标分支”。
在“更改目标分支”窗格中,选择“选择目标分支”,选择新分支,然后选择“更改”。
通过电子邮件向利益干系人发送拉取请求通知
可以通过电子邮件共享拉取请求,以通知审阅者并与团队成员通信。 共享 PR:
在 PR 的“概述”页上选择“更多选项”,然后选择“共享拉取请求”。
在“共享拉取请求”屏幕上,通过在“收件人:”字段中键入收件人的姓名并从显示的用户名中进行选择来添加收件人。 还可以删除收件人。
在“注释(可选)”字段中添加可选消息,然后选择“发送”。 收件人将收到一封需要他们注意且链接到 PR 的电子邮件。
注意
如果使用内置电子邮件功能,则只能将电子邮件发送到项目成员的个人地址。 不支持将团队组或安全组添加到“收件人:”行。 如果添加系统无法识别的电子邮件帐户,则会收到一条消息,提示一个或多个电子邮件收件人无权读取已邮寄的拉取请求。
后续步骤
相关文章