注意
本文适用于公共存储库中的存储库级别安全公告。 要在 GitHub Advisory Database 中编辑全局安全公告,请参阅 在 GitHub Advisory Database 中编辑安全公告。
先决条件
在临时私有复刻中进行协作之前,必须创建安全通告草稿。 有关详细信息,请参阅“创建存储库安全公告”。
创建临时私有分支
为保证漏洞相关信息的安全,集成系统(包括 CI)无法访问临时私有复刻。
-
在 GitHub 上,导航到存储库的主页面。1. 在仓库名称下,单击 “Security”。 如果看不到“Security”选项卡,请选择 下拉菜单,然后单击“Security”********。
1. 在左边栏中的“Reporting”下,单击 “Advisories”。
-
在“安全公告”列表中,点击您想在其中创建临时私有分支的安全公告的名称。
-
滚动到建议表单的底部,然后单击“启动临时私有分支”。

将创建存储库的私有分支,并显示在公告页上。
专用分支的命名约定与 GitHub Advisory Database 中用于公告的约定非常相似,并遵循以下格式:
repo-ghsa-xxxx-xxxx-xxxx,其中: *repo是存储库的名称。 为了保持存储库名称不超过 100 个字符的限制,我们将原始存储库的名称截断为 80 个字符。 *xxxx-xxxx-xxxx是安全公告草稿的唯一标识符: *x是以下集合中的字母或数字:23456789cfghjmpqrvwx。 * 数字和字母是随机分配的。 * 所有字母和数字均为小写。
例如,如果在名为 octocat-repo 的存储库中创建一个临时专用分支,并且为草稿公告自动生成的 ID 为 GHSA-x854-cvjg-vx26,则临时分支名为 octocat-repo-ghsa-x854-cvjg-vx26。
还可以使用 REST API 创建临时专用分支。 有关详细信息,请参阅 REST API 文档中的创建临时专用分支。
将协作者添加到临时私有分支
对安全通告具有管理员权限的任何人都可以向安全通告添加其他协作者,而安全通告的协作者可以访问临时私有复刻。 有关详细信息,请参阅“将协作者添加到存储库安全通告”。
将更改添加到临时私有分支
任何对安全公告有写入权限的人都可以通过向临时私有分支添加更改来协作处理修补程序。
-
在 GitHub 上,导航到存储库的主页面。1. 在仓库名称下,单击 “Security”。 如果看不到“Security”选项卡,请选择 下拉菜单,然后单击“Security”********。
1. 在左边栏中的“Reporting”下,单击 “Advisories”。
-
在“安全公告”列表中,单击要处理的安全公告的名称。
-
可以在 GitHub 上或在本地进行更改:
- 若要在 GitHub 上进行更改,请在“协作处理修补程序”下单击“临时私有分支”****。 然后,创建新分支并编辑文件。 有关详细信息,请参阅 在库中创建和删除分支 和 编辑文件。
- 要在本地添加更改,请按照“克隆并创建新分支”和“进行更改,然后推送”下的说明进行操作。

从临时私有复刻创建拉取请求
任何拥有安全通告写入权限的人都可以从临时私有分支创建 Pull Request。
-
在 GitHub 上,导航到存储库的主页面。1. 在仓库名称下,单击 “Security”。 如果看不到“Security”选项卡,请选择 下拉菜单,然后单击“Security”********。
1. 在左边栏中的“Reporting”下,单击 “Advisories”。
-
在“安全公告”列表中,单击要在其中创建拉取请求的安全公告的名称。
-
滚动到咨询表单底部。 然后,在“协作处理修补程序”下,单击“比较并提出拉取请求”,为关联的分支创建拉取请求。

“打开拉取请求”包括一个标头,其中显示了在创建拉取请求时将在三点 Git 差异比较中比较的分支。 有关详细信息,请参阅“关于比较拉取请求中的分支”。
- 要创建可供审查的拉取请求,请单击“创建拉取请求”。 若要创建草稿拉取请求,请使用下拉列表并选择“创建草稿拉取请求”,然后单击“草稿拉取请求” 。 如果你是组织的成员,则可能需要从组织所有者请求对草稿拉取请求的访问权限。 请参阅“关于拉取请求”。
您不能在临时私有复刻中合并个别拉取请求。 而可以在相应的安全通告中一次合并所有打开的拉取请求。 有关详细信息,请参阅合并安全通告的更改。
合并安全通告中的更改
对安全通告具有管理员权限的任何人都可合并安全通告中的更改。
您不能在临时私有复刻中合并个别拉取请求。 而可以在相应的安全通告中一次合并所有打开的拉取请求。
在合并安全公告中的更改之前,临时私有分支中每个打开的拉取请求必须是可合并的。 为保证漏洞相关信息的安全,状态检查程序不会在临时私有分支的拉取请求上执行。 有关详细信息,请参阅“关于受保护分支”。
此外,不会发生合并冲突,对于你尝试将更改合并到的分支,GitHub 不会强制执行你可能为该分支设置的任何保护规则。
- 在 GitHub 上,导航到存储库的主页面。1. 在仓库名称下,单击 “Security”。 如果看不到“Security”选项卡,请选择 下拉菜单,然后单击“Security”********。
1. 在左边栏中的“Reporting”下,单击 “Advisories”。

- 在“安全公告”列表中,单击要合并其更改的安全公告的名称。
- 滚动到建议表格底部。 然后,在“此通知已准备好合并”下,点击合并拉取请求以合并临时私有分支中的所有打开的拉取请求。

注意
只能将一个拉取请求合并到临时私有分支的 main 分支中。 如果多个拉取请求以 main 分支为目标,则会阻止合并。
合并安全通告中的更改后,您可以发布安全通告,以提醒您的社区有关项目早期版本中安全漏洞的信息。 有关详细信息,请参阅“发布存储库安全公告”。
延伸阅读
-
[AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/permission-levels-for-repository-security-advisories) -
[AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/publishing-a-repository-security-advisory)