如何使用 Husky 防止直接提交更改到主分支(master)?

8
我正在使用Husky运行git钩子。
"husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  }

我希望防止直接提交到主分支。只允许通过合并请求更新主分支。

我在Git:防止在主分支中提交上看到了以下代码。 我将其复制到.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

但我想使用 Husky 来实现这个目标。我该怎么做?

3个回答

14
我已经根据 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",
    }

不再向主分支提交代码 :)


4

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

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

自从 https://github.com/kevinoid/git-branch-is/pull/29 以来,有一个 --not - muescha

4

作为一个附注,它无法防止管理员推送。 - Yonggoo Noh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接