跳至内容
GitTree
更改和提交

在提交之前检查可能的秘密

在提交或推送之前,GitTree 可以显示 Possible secrets in this commit 或 Possible secrets in this push。扫描是局部的且有界的。您可以 Unstage File、Add to .gitignore、Commit Anyway 或 Push Anyway。警告并不能证明秘密存在,沉默也不能证明秘密不存在。

免费已更新

适用于 GitTree 免费:所有本地 Git 功能,无需帐户。

在此页面上
  1. 开始之前
  2. 在哪里可以找到它
  3. 步骤
  4. 预期结果
  5. 扫描不涵盖的内容
  6. 忽略规则和暂存文件
  7. 故意允许一根线
  8. 如果出现问题
  9. 问题
  10. 有关的

开始之前

  • 秘密警告是免费计划的一部分。当 Local secret warnings 为 Warn before proceeding 时,它们开启。
  • 扫描会读取提交的暂存内容以及推送的支持的传出提交范围。它不会将文件内容发送到 GitTree。

在哪里可以找到它

  • 当您提交时,警告会从提交框中打开;当您推送时,警告会从推送流中打开。
  • Preferences,Local secret warnings 设置:Warn before proceeding 或 Off。
行动macOSWindows 和 Linux
提交⌘EnterCtrl+Enter
偏好设置⌘,Ctrl+,

步骤

  1. 照常提交或推送

    暂存文件并写入消息,或开始推送。如果扫描发现可能的秘密,则 GitTree 会停止并打开对话框,而不是结束。当对话框是提交对话框时,您的消息和工作文件将被保留。推送对话框表示修复已提交的秘密需要新的提交或重写。

    带有消息字段、选项和挂钩线的提交框
    提交警告从此框中打开。仍然显示作曲家,而不是警告对话框。GitTree 与演示存储库的接口。
  2. 阅读警告

    标题为 Possible secrets in this commit 或 Possible secrets in this push。每行命名一条规则,例如 Private key、AWS access key、GitHub token、GitLab token、Slack token、Stripe live key、Google API key 或 Sensitive file name,以及行号(如果有)。令牌被屏蔽。私钥显示为 Private key header。

  3. 保守秘密远离提交

    Unstage File 从索引中删除该文件。 Add to .gitignore 添加忽略规则。该对话框显示忽略规则不会删除暂存的内容,因此也取消暂存该文件。要有意允许一行,请在该行上添加 gittree:allow-secret。这会停止该行的警告。它不加密任何内容。

  4. 仅当您有意为时才继续

    Commit Anyway 或 Push Anyway 继续。 Cancel 返回提交框或推送而不共享。如果未检查某些更改,该对话框会如此说明。将其视为不完整的扫描,而不是干净的结果。

预期结果

要么这个秘密不再暂存,要么你在阅读警告后选择继续。在推送之前检查下一个提交的差异。 .gitignore 规则不会重写已包含该文件的提交。

扫描不涵盖的内容

Local secret warnings 表示检查保持本地且有界,关闭它是您对整个应用程序的选择。它可以报告的间隙有 The inspection limit was reached、Binary content was skipped、Lines longer than 4 KiB were skipped 和 Some content could not be inspected。 The optional secret scan was unavailable 表示您应该自行查看内容。

为什么秘密会被错过
间隙该怎么办
二进制内容被跳过自己打开文件。扫描不读取它。
超过 4 KiB 的行被跳过在编辑器中搜索该行。不扫描缩小线上的标记。
已达到检验极限提交较小的文件集并读取其余文件。
设置为关闭在您选择“警告”后再继续之前,不会扫描任何内容。

忽略规则和暂存文件

该对话框显示 Ignore rules do not remove staged content. Unstage the file as well. git check-ignore 可以显示路径与 .gitignore 匹配,而 git diff --cached 仍将其显示在索引中。取消暂存,然后提交。添加规则不会从已存在的提交中删除文件。

git diff --cached -- path/to/file
git restore --staged -- path/to/file
git check-ignore -v path/to/file

如果密钥已在远程仓库上,则更改 .gitignore 是不够的。您需要一个新的提交来删除它,并且如果旧的提交不能包含它,则需要重写历史记录。 GitTree 不承诺从每个克隆中删除秘密。如果您还想要一个钩子来拒绝提交,请参阅忽略文件 和钩子。

故意允许一根线

Add gittree:allow-secret on a line to stop warning about it. 将该标记放在应提交的行上,例如不是真正凭证的固定令牌。该标记在文件中可见。不要用它来隐藏实时密钥。 Commit Anyway 提交但不添加标记。

推送警告会审查您即将发送的提交。 Possible secrets in this push 无法取消暂存已在提交中的文件。使用新的提交修复它,或重写未发布的历史记录,然后再次推送。 强制推送带租约 是分支取消发布时的安全重写推送。 教程 涵盖了在您需要此对话框之前的日常提交。

如果出现问题

“潜在的秘密需要您在继续之前进行审查。”

提交或推送正在等待对话框。取消暂存、忽略、允许该线路,或者选择“仍然提交”或“仍然推送”。取消会将消息和工作文件留在原处以供提交。

“忽略规则不会删除暂存的内容。也会取消暂存文件。”

添加到 .gitignore 仅更新忽略文件。按 Unstage File,或运行 git Restore --staged,以便下一次提交不包含该路径。

“有些变化没有经过检查。”

扫描提前停止、跳过二进制文件或跳过超过 4 KiB 的行。在继续之前请先阅读这些文件。

“可选的秘密扫描不可用。请自行查看内容。”

GitTree 无法运行扫描。该提交未经过认证干净。阅读差异,然后仅在检查后提交。

问题

GitTree 会上传我的文件来查找机密吗?

不会。设置规定检查仅限于本地且有界。该对话框会检查您要在此计算机上提交或推送的内容。

干净的对话就证明没有秘密吗?

不会。二进制内容和长度超过 4 KiB 的行将被跳过,检查可能会达到限制,并且模式并不匹配每个秘密。警告也不是保证。

.gitignore 是否会删除我已经暂存的秘密?

不会。忽略规则不会删除暂存的内容。也取消暂存该文件。规则也不会重写旧的提交。

gittree:allow-secret 有什么作用?

在一行上,它会停止该行的警告。该行仍然作为文本提交。仅将其用于您打算分享的价值。

我可以关闭警告吗?

是的。首选项 › 本地秘密警告 › 关闭。这是应用程序范围内的选择。扫描不会运行,直到您设置警告后再继续。