Skip to main content

推送受推送保护阻止的分支

secret scanning 的推送保护功能会主动保护你免遭存储库中泄露的机密的侵害。 可以解析阻止的推送,在删除检测到的机密后,可以从命令行或 Web UI 将更改推送到工作分支。

合作伙伴的机密扫描警报 在 GitHub.com 上的公共存储库和公共 npm 包中自动运行,以向服务提供商通知泄漏的机密情况。

用户的机密扫描警报 在所有公共存储库上免费提供。 使用 GitHub Enterprise Cloud 且拥有 GitHub Advanced Security 许可证的组织也可以在其专用存储库和内部存储库上启用 用户的机密扫描警报。

如果你的企业拥有 GitHub Advanced Security 的许可证,则 有关详细信息,请参阅 “关于机密扫描”和“关于 GitHub 高级安全性”。

关于 secret scanning 的推送保护

secret scanning 的推送保护功能有助于通过在将更改推送到存储库之前扫描有无机密来避免安全漏洞。 为你的组织或存储库启用推送保护时,secret scanning 还会检查推送中是否存在高置信度机密(经识别误报率低的机密)。 Secret scanning 列出了它检测到的所有机密,便于作者进行查看和删除,或者根据需要允许推送这些机密。有关推送保护支持的机密和服务提供商的信息,请参阅“机密扫描模式”。

如果确认机密是真实的,则需要将机密从分支和出现机密的所有提交中删除,然后再次推送。

提示 如果 GitHub 阻止了一个你认为可以安全推送的机密,则可以允许该机密并指定允许的原因。 有关绕过对机密的推送保护的详细信息,请分别参阅命令行和 Web UI 的“允许推送被阻止的机密”和“绕过机密的推送保护”。

组织所有者可以提供自定义链接,当推送被阻止时,该链接会包含在来自 GitHub 的消息中。 此自定义链接可以包含特定于组织及其策略的资源和建议。

解析命令行上的阻止推送

尝试在 secret scanning 作为推送保护启用的情况下将受支持的机密推送到存储库或组织时,GitHub 将组织推送。 可以从分支中删除该机密,或遵循提供的 URL 来允许推送。

注释

  • 如果 git 配置支持推送到多个分支,而不仅仅是推送到当前分支,则由于附加和意外的引用被推送,你的推送可能被阻止。 有关详细信息,请参阅 Git 文档中的 push.default 选项
  • 如果在推送超时后进行 secret scanning,GitHub 仍将在推送后扫描你的提交有无机密。

如果分支上的最新提交引入了阻止的机密,可以遵循以下指南进行操作。

  1. 从代码中删除机密。
  2. 使用 git commit --amend 提交更改。
  3. 使用 git push 推送更改。

如果机密出现在 Git 历史记录的早期提交中,还可以将其删除。

  1. 使用 git log 确定推送错误中呈现的哪个提交首次出现在历史记录中。
  2. 使用 git rebase -i <commit-id>~1 启动交互式变基。 是步骤 1 中提交的 ID。
  3. 通过将编辑器中显示的文本的第一行上的 pick 更改为 edit 来确定要编辑的提交。
  4. 从代码中删除机密。
  5. 使用 git commit --amend 提交更改。
  6. 运行 git rebase --continue 以完成变基。

在 Web UI 中解析阻止的提交

使用 Web UI 尝试将受支持的机密提交到启用了机密扫描作为推送保护的存储库或组织时,GitHub 将阻止提交。

你将看到一个对话框,其中包含有关机密位置的信息,以及允许推送机密的选项。 机密还会在文件中加下划线,以便可以轻松找到它。

若要解决 Web UI 中被阻止的提交,需要从文件中删除机密,或使用对话框中显示的选项来允许机密。 有关绕过 Web UI 中的推送保护的详细信息,请参阅“存储库和组织的推送保护”。

如果确认机密是真实的,则需要将机密从文件中删除。 删除机密后,即可提交更改。