Вы не можете фактически предотвратить pu sh с помощью системы CI по нескольким причинам.
Во-первых, вашей системе CI необходим доступ к данным для pu sh, что означает, что он должен где-то жить в хранилище, чтобы его можно было получить. Во-вторых, системам CI может потребоваться много времени для запуска, и никто не хочет бездельничать и ждать, пока их pu sh либо преуспеет, либо выйдет из строя, пока их система CI работает. Что, если вы подтолкнули прямо перед концом рабочего дня?
Обычно вы делаете это, просто вставляя sh в ветку, позволяя системе CI работать, а затем объединяйте ее. Если вы работаете с несколькими людьми, использование правильных запросов и настройка CI для запуска при каждом открытии или обновлении - правильный шаг. В противном случае вы можете просто настроить рабочий процесс для работы со всеми ветвями (например, так), а затем объединить ветку, когда она пройдет:
on: push