Как запретить делать merge в мастер в консоли?

Чтобы запретить делать merge в ветвь мастера в Git через консоль, необходимо использовать механизм сохранения хуков (hooks). Хуки — это скрипты, которые выполняются в определенном моменте жизненного цикла Git команды. Мы можем добавить кастомный хук pre-receive на сервере Git, чтобы проверять и отклонять push операции, которые включают merge в мастер.

1. Найдите Git репозиторий на сервере, в котором вы хотите запретить вмерживание в мастер.

2. Войдите в директорию .git/hooks.

3. Создайте файл с именем pre-receive.

4. Откройте созданный файл и добавьте следующий код:

   #!/bin/bash

   while read old_rev new_rev ref_name; do
       if [[ $ref_name == "refs/heads/master" ]]; then
           echo "Merging into master is not allowed!"
           exit 1
       fi
   done

   exit 0

5. Сохраните и закройте файл pre-receive.

6. Установите права на выполнение для файла pre-receive:

   chmod +x pre-receive

Когда пользователь попытается замержить ветку в мастер, пуш команда будет прервана с сообщением "Merging into master is not allowed!".

Помимо этого, можно также использовать другие хуки, например pre-commit или pre-merge-commit, чтобы блокировать merge операции на локальном компьютере разработчиков. Однако, хуки на клиентской стороне могут быть обходными, потому что изменения могут быть просто отменены или игнорированы.

В целом, использование хуков представляет собой мощный инструмент для контроля и ограничения определенных операций в Git репозиториях, таких как запрет вмерживания ветки в мастер, и может повысить безопасность и качество вашего проекта.