git - 禁止从特定分支分支和 merge

标签 git git-workflow

是否有 git hook 或其他方法来禁止从特定分支分支和 merge 。我们要确保我们不会将“脏”集成分支 merge 到干净的部署分支中。

主要目标是人们不能执行这样的事情:

git checkout integration
git checkout -b major_problem_branch

git checkout deployment_or_hotfix_or_feature_branch
git merge integration

最佳答案

您可以通过将此添加到裸存储库中的配置文件来在服务器上使用分支权限:

[hooks]
        allowedtomerge = user1,user2,user3
        protectedbranches = master

这将允许 user1、user2 和 user3 merge 到 master 分支,但不允许其他分支。

或者您可以创建一个预提交 Hook :

#!/bin/bash

if [[ `git symbolic-ref HEAD` == "refs/heads/master" ] -a ["$USER" != "user1"]] then
    echo "You cannot commit in master!"
    exit 1
fi

然后你会有人进行评估并允许更改继续进行。

理想情况下,我会使用您喜欢的系统,例如 gerrit 或 assembla 或 github。他们有很好的方法通过 merge 请求控制主分支。

关于git - 禁止从特定分支分支和 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196693/

相关文章:

git - 当我在 Android Studio 4.1 中使用 Git 时,如何显示所选文件的所有分支中的所有历史文件

git - 推送到远程分支以进行 pull 请求

git - 为什么 git tag local 在推送后会在远程创建两个标签?

Github 工作流操作和 EC2 : Error Loading Key Invalid Format

git - 如何避免使用 Visual Studio Git 进行不必要的 merge

git - 查找在分支中专门更改的文件

c# - LibGit2Sharp Pull() 不 pull 已删除的文件

git - 在不暂存的情况下提交文件

git merge : filter files to avoid silly conflicts (like whitespace or case changes)

当你不能推或 pull 时的 Git 工作流