如何防止使用 husky 直接提交到 master 分支?

How to prevent direct commits to master branch using husky?

我正在使用 husky 运行 git 钩子。

"husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  }

我想阻止直接提交到 master 分支。它应该允许仅通过合并请求更新主分支。

我从 中看到了以下代码。我将其复制到 .git/hooks/pre-commit 并且有效

#!/bin/sh

branch="$(git rev-parse --abbrev-ref HEAD)"

if [ "$branch" = "master" ]; then
  echo "You can't commit directly to master branch"
  exit 1
fi

但是我想用哈士奇来实现这个。我该怎么做?

使用 git-branch-is 你可以在 master 分支中用 husky 阻止提交

"pre-commit": "git-branch-is -r \"^((?!master).)*$\""

我认为这不是设置此限制的正确位置,因为它很容易被绕过。 作为替代方案,我建议您修改 repository/branch.

的保护规则

下面是 GitHub 和 Bitbucket 的处理方式:

我知道这是一种不同的方法,但我希望它也能有所帮助。

我用 OP 提供的内容创建了一个文件。

文件:hooks/pre-commit

#!/bin/sh

branch="$(git rev-parse --abbrev-ref HEAD)"

if [ "$branch" = "master" ]; then
  echo "You can't commit directly to master branch"
  exit 1
fi

然后我在 package.json

中添加了 husky pre-commit 字段的条目
  "husky": {
    "hooks": {
      "pre-commit": "sh hooks/pre-commit",
    }

不再提交给 master :)