📌  相关文章
📜  防止推送到主 github - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:28:49.876000             🧑  作者: Mango

防止推送到主 github - Shell/Bash

当项目中存在敏感信息或者测试代码时,我们希望能够防止将本地代码误推送到主 github 仓库上,从而避免泄露信息或者破坏线上代码。本文将介绍如何使用 Shell/Bash 脚本来防止推送到主 github。

如何实现?
  1. 在本地仓库的 '.git/hooks/' 目录下创建 pre-commit 拦截器

pre-commit 脚本可以让用户在执行 commit 操作之前对代码进行检查或操作。我们在该目录下创建一个 pre-commit 的文件并加上可执行权限:

touch .git/hooks/pre-commit
chmod a+x .git/hooks/pre-commit
  1. 编辑 pre-commit 文件

在 pre-commit 文件中,我们需要编写 Shell/Bash 脚本,来检查当前提交是否满足我们的要求,如果不满足则阻止提交。以下是一个例子:

#!/bin/sh

for FILE in $(git diff --cached --name-only); do
  if [[ $FILE == *passwords* || $FILE == *tests* ]]; then
    echo "Aborting commit due to sensitive files"
      exit 1
  fi
done

exit 0

这个脚本会检查即将提交的所有文件名,如果这些文件名包含了 'passwords' 或 'tests' 字符串,则阻止提交,并输出错误信息。

  1. 测试 pre-commit 脚本

我们可以对 pre-commit 脚本进行测试,来确认它能否如我们所预期的防止代码推送到主 github。我们可以尝试提交包含敏感信息或者测试代码的文件,并查看提交的结果。若脚本生效,将会提示错误信息并终止提交,如下图所示:

pre-commit error

总结

通过设置 pre-commit 脚本,我们可以自动化地防止将敏感信息或测试代码推送到主 github 上。这样一来,我们能够降低代码泄露或线上代码受损的风险。