3

我正在使用 husky 运行 git hooks。

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

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

我从Git 中发现了以下代码:Prevent commits in master branch。我将它复制到 .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

但我想用哈士奇来实现这一点。我怎么做?

4

3 回答 3

6

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

文件:钩子/预提交

#!/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 提交:)

于 2020-09-25T08:59:07.203 回答
3

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

"pre-commit": "git-branch-is -r \"^((?!master).)*$\""
于 2019-08-21T08:31:37.947 回答
3

我认为这不是进行此限制的正确位置,因为它很容易被绕过。作为替代方案,我建议您修改存储库/分支的保护规则。

以下是使用 GitHub 和 Bitbucket 的方法:

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

于 2019-12-11T16:22:54.853 回答