Исправить ошибку GitLab: «Вы не можете распространять код в защищенных ветках в этом проекте»?


327

У меня проблема, когда я отправляю свои коды в git, когда у меня есть доступ разработчика в моем проекте, но все нормально, когда у меня есть основной доступ. Откуда проблема? И как это исправить?

Сообщение об ошибке:

ошибка: вы не можете отправить код в защищенные ветви этого проекта.
...
ошибка: не удалось отправить некоторые ссылки на ...


Ответ Хкорга - хорошее решение. Есть еще одна проблема с этим. Если проект только что создал, и у него еще нет ветки. Если нажать «Защищенные ветви», он будет перенаправлен на домашнюю страницу проекта. Создать ветку будет работать.
pdwjun

См. Также stackoverflow.com/a/61964599/6309 с GitLab 13.0 (май 2020 г.), где вы можете включить защиту веток по умолчанию на уровне группы.
VonC

Ответы:


506

нет проблем - все работает как положено.

В GitLab некоторые ветки могут быть защищены. По умолчанию только пользователи Maintainer / Owner могут фиксировать защищенные ветви (см. Документы по разрешениям ). masterветвь защищена по умолчанию - она ​​заставляет разработчиков выдавать запросы на слияние, которые должны быть проверены сопровождающими проекта перед их интеграцией в основной код

Вы можете включать и выключать защиту для выбранных веток в настройках проекта (где точно зависит от версии GitLab - см. Инструкции ниже).

На этой же странице настроек вы также можете позволить разработчикам проталкивать защищенные ветки. Если этот параметр включен, защита будет ограничена отклонением операций, требующих git push --force(перезагрузка и т. Д.)

Начиная с GitLab 9.3

Перейти к проекту: «Настройки» → «Хранилище» → «Развернуть» на «Защищенные ветви»

введите описание изображения здесь

Я не совсем уверен, когда это изменение было введено, скриншоты из версии 10.3.

Теперь вы можете выбрать, кому разрешено объединять или вставлять в выбранные ветви (например: вы можете вообще отключить push-сообщения master, заставляя все изменения в ветви вносить с помощью запросов на слияние). Или вы можете нажать «Снять защиту», чтобы полностью снять защиту с ветки.

Начиная с GitLab 9.0

Аналогично GitLab 9.3, но не нужно нажимать «Развернуть» - все уже развернуто:

Зайдите в проект: «Настройки» → «Хранилище» → прокрутите вниз до «Защищенные ветви».

введите описание изображения здесь

Pre GitLab 9.0

Проект: «Настройки» → «Защищенные ветви» (если вы хотя бы «Мастер» данного проекта).

Настройки → Защищенные ветки

Затем нажмите «Снять защиту» или «Разработчики могут нажать»:

введите описание изображения здесь


Не забывайте, что могут потребоваться некоторые разрешения. Как указано в docs.gitlab.com/ee/user/project/protected_branches.html , по крайней мере, «Уровень разрешений мастера». В моем случае нажатие на колесо настроек показывает только опцию «Выйти из проекта».
CoolMind

1
По какой-то причине мне вдруг пришлось добавить себя в качестве основного пользователя для моего собственного проекта.
jgillich

3
У меня возникла эта проблема, потому что я НЕ был участником своего СОБСТВЕННОГО проекта, и я уже подтолкнул этот проект ... Чтобы изменить его, в проекте тура выберите механизм, Участники, найдите своего пользователя, назначьте ему роль и нажмите «Добавить». пользователи для проекта ".
Лоеникс

Странно, мне тоже пришлось включить себя в личный проект на gitlab.com
Томас Деко

1
Хорошо, если вы являетесь единственным сопровождающим или разработчиком, поэтому вы можете изменить настройки и поэкспериментировать с ними. Но если над репо работает команда, то не стоит менять защиту репо.
Mnemo

27

для GitLab Enterprise Edition 9.3.0

По умолчанию ветка master защищена, поэтому снимите защиту :)

1-Выберите свой «проект»

2-Выберите «Хранилище»

3-Выберите "филиалы"

4-Выберите «Настройки проекта»

5-в "Защищенные ветви" нажмите, чтобы "развернуть"

6 и после нажатия на кнопку «снять защиту»


У меня не было "веток", потому что я еще не создал ни одного файла в этом хранилище. Я создал Readme.md и появились ветки.
Икром

1

Я столкнулся с этой ошибкой в ​​"пустой ветке" на моем локальном сервере gitlab. Некоторые люди упоминали, что «вы не можете впервые нажать на пустую ветку». Я попытался создать простой файл README на gitlab через мой браузер. Тогда все исправлено удивительно, и проблема разобралась !! Я упоминаю, что я был мастером, и филиал не был защищен.


Это странно для меня, и я рассматриваю эту проблему как ошибку gitlab. Для меня неприемлемо, чтобы у меня не было разрешения на запуск пустого репо. Я надеюсь, у парней мерзавцев есть ответ на это.
Вахид Ф.


1

Простое решение этой проблемы - быстрый чат с человеком, который имеет роль владельца в gitlab. Он может нажать один файл READ.md или аналогичный, чтобы просто начать с. Позже все будет работать как раньше.


Если возможно, попробуйте получить роль владельца в хранилище. Если у вас есть роль владельца, вы можете перейти непосредственно к мастеру. Это раздражает, но предотвращает создание нежелательных новых проектов. Нет никакого хака до тех пор, пока владелец репо не нажмет первый файл или у вас не будет роли владельца. Надеюсь это поможет.
Крис

1

Я был на Windows, когда появилась эта проблема.

Ошибка странная, потому что это происходит до того, как я смог ввести свое имя пользователя и пароль. Что делать, если там был кеш или что-то подобное? Я покопался в Интернете и нашел ответ на форуме поддержки gitlab :

Я открываю «Панель управления => Учетные записи пользователей => Управлять своими учетными данными => Учетные данные Windows». Я нашел два для https: //@github.com и один был неправильным пользователем. Я удалил его, и на следующем «git push» меня повторно определили и предоставили правильные учетные данные, и это сработало! Некоторые другие заметки - это могло произойти с любым Git Remote.

В учетных данных Windows я нашел две записи GitLab для старой учетной записи. Я удаляю оба, и теперь это работает!

Панель:

введите описание изображения здесь


@YanickSenn Добро пожаловать. Я потерял много времени на этом. Рад, что это помогает.
aloisdg переходит на codidact.com

1

Это считается особенностями в Gitlab.

Maintainer / Ownerдоступ никогда не сможет принудительно нажать снова для ветки по умолчанию и защищенной, как указано в этой документации введите описание изображения здесь


1
На самом деле это совсем не прискорбно. Это определенно хорошая вещь. Это дополнительный уровень защиты.
Тирамису

0

Я столкнулся с той же проблемой в моем хранилище. Я мастер репозитория, но у меня была такая ошибка.

Я снял защиту с моего проекта, а затем снова защитил, и ошибка исчезла.

Мы обновили версию gitlab между моей предыдущей версией и проблемной. Я полагаю, что это обновление создало ошибку.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.