如何防止使用赫斯基直接提交到master分支?

时间:2019-07-11 10:54:00

标签: git git-husky

我正在使用沙哑运行git钩子。

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

我想防止直接提交到master分支。它应该只允许通过合并请求来更新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

但是我想用沙哑的方式实现。我该怎么办?

3 个答案:

答案 0 :(得分:2)

使用git-branch-is,您可以在主分支中阻止带有沙哑的提交

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

答案 1 :(得分:2)

我使用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了:)

答案 2 :(得分:1)

我认为进行限制的位置不正确,因为可以轻松绕开它。 另外,我建议您修改存储库/分支的保护规则。

使用GitHub和Bitbucket的方法如下:

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