检查 Git Commits 中的敏感词
不支持 windows 系统
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/lei4519/inspect-commits/master/scripts/install)"
安装成功后,在终端中执行 inspect-commits
命令应该会有信息输出。
inspect-commits
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/lei4519/inspect-commits/master/scripts/uninstall)"
SUBCOMMANDS:
check 检查当前分支中未提交到远程仓库的 commits
checkall 检查当前分支下的所有 commits
config 编辑配置文件;-p 参数返回文件地址
set-global-hook 将程序配置为 git global core.hooksPath
unset-global-hook 清除 git global core.hooksPath 配置
编辑配置文件,文件格式为 JSON。
// 可配多个规则
type Rules = Array<Rule>
type Rule = {
// 当前规则需要排除的远程地址
exclude_repo_urls: Array<string>
// 当前规则需要检查的敏感词
words: Array<string>
}
{
"rules": [
{
"exclude_repo_urls": [
"github.com"
],
"words": [
"password"
]
},
{
"exclude_repo_urls": [
"gitlab.com"
],
"words": [
"sensitive"
]
}
]
}
检查当前分支中未提交到远程仓库的 commits
inspect-commits check origin
检查当前分支下的所有 commits
将程序配置为全局的 pre-push hook,实际就是在设置 git config --global core.hooksPath
清除全局 hook 配置,等同于执行 git config --global --unset core.hooksPath
。
- 如果已存在全局 hook,此命令显示警告信息,并覆盖已存在的 hook。
- 如果在 git 仓库中配置了 hooksPath 会覆盖 git 全局的 hook
如果存在以上情况,可以使用 husky 进行多 hook 管理。
安装 Husky 并生成 .husky/pre-push
脚本后,将以下内容放入脚本中
read local_ref local_sha remote_ref remote_sha
inspect-commits check $1 $remote_ref $local_ref
- pre-commit 可以被
--no-verify
跳过,pre-push 无法被跳过 - commit 会很频繁,而 push 不会
- 敏感信息暴露出去才算风险,在电脑中不算
使用 git rebase -i
, 对目标 commit 进行 edit
,详情参考 Git 工具 - 重写历史