【问题标题】:How to prevent direct commits to master branch using husky?如何防止使用 husky 直接提交到 master 分支?
【发布时间】:2019-11-21 01:52:27
【问题描述】:

我正在使用 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

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

【问题讨论】:

    标签: git git-husky


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

    这是使用 GitHub 和 Bitbucket 完成的方法:

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

    【讨论】:

    • 附带说明,它不能阻止管理员推送
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2020-05-04
      • 2011-04-12
      • 2015-01-27
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多