GitHub - запретить соавторам использовать push -f - PullRequest
33 голосов
/ 23 февраля 2011

Есть ли способ предотвратить принудительное продвижение в ветку или хранилище?

Я хочу помешать важным веткам переписать свою историю случайно или намеренно. Как люди справляются с этим в больших командах разработчиков?

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

Ответы [ 2 ]

32 голосов
/ 23 февраля 2011

Это легко сделать с помощью Git с pre-receive крючком. Конечно, для этого требуется, чтобы вы на самом деле могли устанавливать хуки, и по понятным причинам GitHub не позволяет загружать произвольные исполняемые файлы для запуска на их серверах: -)

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

Другим обходным решением может быть создание собственного промежуточного репозитория на вашем сервере, где вы можете установить свои собственные ловушки Git. Вы можете настроить хук pre-receive, который запрещает нажатие, если это не перемотка вперед, и хук post-receive, который автоматически перенаправляет все нажатия на GitHub. Конечно, это означает, что вы теряете многие преимущества использования GitHub.

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

В любом случае вам следует подать запрос на добавление функций в GitHub (особенно, если вы платный клиент!), Поскольку это полезная функция.

17 голосов
/ 08 июня 2015

GitHub анонсировал функцию «защищенных веток»:

[...] новую функцию под названием «Защищенные ветви», которая дает администраторам хранилища возможность отключать принудительные нажатия на определенные ветви.[...] перейдите на вкладку Ветви в настройках хранилища и защитите ветви.

Источник: https://github.com/blog/2051-protected-branches-and-required-status-checks

image Settings > Branches">

...