在提交之前检查可能的秘密
在提交或推送之前,GitTree 可以显示 Possible secrets in this commit 或 Possible secrets in this push。扫描是局部的且有界的。您可以 Unstage File、Add to .gitignore、Commit Anyway 或 Push Anyway。警告并不能证明秘密存在,沉默也不能证明秘密不存在。
适用于 GitTree 免费:所有本地 Git 功能,无需帐户。
开始之前
- 秘密警告是免费计划的一部分。当 Local secret warnings 为 Warn before proceeding 时,它们开启。
- 扫描会读取提交的暂存内容以及推送的支持的传出提交范围。它不会将文件内容发送到 GitTree。
在哪里可以找到它
- 当您提交时,警告会从提交框中打开;当您推送时,警告会从推送流中打开。
- Preferences,Local secret warnings 设置:Warn before proceeding 或 Off。
| 行动 | macOS | Windows 和 Linux |
|---|---|---|
| 提交 | ⌘Enter | Ctrl+Enter |
| 偏好设置 | ⌘, | Ctrl+, |
步骤
阅读警告
标题为 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。
保守秘密远离提交
Unstage File 从索引中删除该文件。 Add to .gitignore 添加忽略规则。该对话框显示忽略规则不会删除暂存的内容,因此也取消暂存该文件。要有意允许一行,请在该行上添加
gittree:allow-secret。这会停止该行的警告。它不加密任何内容。仅当您有意为时才继续
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 不承诺从每个克隆中删除秘密。如果您还想要一个钩子来拒绝提交,请参阅忽略文件 和钩子。
故意允许一根线
如果出现问题
“潜在的秘密需要您在继续之前进行审查。”
提交或推送正在等待对话框。取消暂存、忽略、允许该线路,或者选择“仍然提交”或“仍然推送”。取消会将消息和工作文件留在原处以供提交。
“忽略规则不会删除暂存的内容。也会取消暂存文件。”
添加到 .gitignore 仅更新忽略文件。按 Unstage File,或运行 git Restore --staged,以便下一次提交不包含该路径。
“有些变化没有经过检查。”
扫描提前停止、跳过二进制文件或跳过超过 4 KiB 的行。在继续之前请先阅读这些文件。
“可选的秘密扫描不可用。请自行查看内容。”
GitTree 无法运行扫描。该提交未经过认证干净。阅读差异,然后仅在检查后提交。
问题
GitTree 会上传我的文件来查找机密吗?
不会。设置规定检查仅限于本地且有界。该对话框会检查您要在此计算机上提交或推送的内容。
干净的对话就证明没有秘密吗?
不会。二进制内容和长度超过 4 KiB 的行将被跳过,检查可能会达到限制,并且模式并不匹配每个秘密。警告也不是保证。
.gitignore 是否会删除我已经暂存的秘密?
不会。忽略规则不会删除暂存的内容。也取消暂存该文件。规则也不会重写旧的提交。
gittree:allow-secret 有什么作用?
在一行上,它会停止该行的警告。该行仍然作为文本提交。仅将其用于您打算分享的价值。
我可以关闭警告吗?
是的。首选项 › 本地秘密警告 › 关闭。这是应用程序范围内的选择。扫描不会运行,直到您设置警告后再继续。
