Ответ 1
Да, это возможно. Вы должны создать крюк pre-commit, который отклоняет фиксации для мастер-ветки. Git не вызывает перехват фиксации при вызове команды merge, поэтому этот хук будет отклонять только обычные коммиты.
- Перейдите в ваш репозиторий.
-
Создайте файл .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
-
Сделайте его исполняемым (не требуется в Windows):
$ chmod +x .git/hooks/pre-commit
Чтобы отключить слияния fast-forwad, вы также должны добавить следующий параметр в ваш файл .git/config:
[branch "master"]
mergeoptions = --no-ff
Если вы хотите также защитить главную ветку на своем пульте, проверьте этот ответ: Как ограничить доступ к главной ветке на git