如何防止使用 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 的处理方式:
- GitHub: https://help.github.com/en/github/administering-a-repository/enabling-branch-restrictions
- 比特桶:https://confluence.atlassian.com/bitbucketserver/using-branch-permissions-776639807.html
我知道这是一种不同的方法,但我希望它也能有所帮助。
我用 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 :)
我正在使用 husky 运行 git 钩子。
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
我想阻止直接提交到 master 分支。它应该允许仅通过合并请求更新主分支。
我从
#!/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 的处理方式:
- GitHub: https://help.github.com/en/github/administering-a-repository/enabling-branch-restrictions
- 比特桶:https://confluence.atlassian.com/bitbucketserver/using-branch-permissions-776639807.html
我知道这是一种不同的方法,但我希望它也能有所帮助。
我用 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 :)