Создайте git hook, чтобы предотвратить слияние с определенными ветвями в локальном репозитории, но разрешить извлечение с удаленного - PullRequest
0 голосов
/ 03 октября 2018

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

У меня есть ветвь master, где я хочу иметь только стабильный рабочий код.Любое дополнение к этой ветке должно исходить из pull-запроса в bitbucket (это может быть github или что-то еще, это просто инструмент, который мы используем).Поэтому я хочу создать git hook в моем локальном репозитории, чтобы предотвратить любое слияние с веткой master, но это также позволяет мне получать / извлекать изменения из моего удаленного репозитория в bitbucket.

У меня уже настроен gitчтобы запретить ускоренные слияния.

Я рассмотрел эти решения, которые предоставляют нечто похожее, то есть белый список и черный список ветвей, которые могут / не могут объединиться в мастер:

Git hook предотвращает слияние определенных веток

https://bl.ocks.org/slattery/5eea0d6ca64687ecba6b

Также это решение не позволяет мне коммитить напрямую в master, что также очень полезно:

Git: Запретить коммиты в основной ветке

Однако я не уверен, если что-либо из этого помешает мне добавить изменения, сделанные запросами на получение в bitbucket / github, в мою локальную работурепозиторий.

Большое спасибо!

[править] Как предложено ниже, я также уже настроил разрешения на ветки в своем репозитории с битбакетом, но это ужеМне только от нажатия слитых master веток.Вместо этого я хочу предотвратить локальное слияние с master.

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Мне неясно, помешает ли что-либо из этого мне внести изменения, внесенные по запросу извлечения в bitbucket / github, в мой локальный рабочий репозиторий.

Нет, покаas:

  • вы вытягиваете из другой ветви, кроме master
  • , или вы вытягиваете новые коммиты из origin/master в ваш локальный мастер, но обнаруживаете, что ветвь "from" является источникомВетвь / xxx (в этом случае вы разрешаете продолжить фиксацию)

Проблема с любыми клиентскими хуками заключается в том, что вам затем необходимо развернуть / распространить этот хук ввсе члены вашей команды.

0 голосов
/ 22 марта 2019

Мне нравится, как вы думаете, однако я думаю, что вы должны попытаться защитить свой удаленный мастер, а затем попросить разработчиков создать свой код в соответствующих ветвях темы, а не в своих локальных ветвях мастера.

Попробуйте ипосмотрите на это использование git: использование git для Microsoft

0 голосов
/ 03 октября 2018

Итак, я хочу создать git hook в моем локальном репозитории, чтобы предотвратить любое слияние с главной веткой (...).

От чего вы защищаете свою местную master ветку?Вы сами?

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

Разрешения ветки Bitbucket описаны в Использование разрешений ветви .

...