1

Я и мой коллега создали новый репозиторий на GitHub и GitLab. Все было хорошо, но из-за недоразумения он давил на GitHub, а я давил на GitLab. Мы настроили зеркалирование репов на GitLab, но только в одном направлении, что привело к расхождению наших репозиториев. Теперь я хотел бы объединить их и перейти только на GitLab, но когда я это сделал:

git remote add gitlab https://username@gitlab.com/username/rep.git
git push --mirror gitlab

Я получил следующую ошибку:

remote: GitLab: You are not allowed to force push code to a protected branch on this project
! [remote rejected] branch only on GitLab (pre-receive hook decline)
! [remote rejected] master -> master (pre-receive hook declined)
! [remote rejected] origin/HEAD -> origin/HEAD (deny updating a hidden ref)
! [remote rejected] origin/master -> origin/master (deny updating a hidden ref)
error: failed to push some refs to URL OF THE REP ON GITLAB

Хотя я мог просто попытаться скопировать и вставить код в репозиторий на GitLab, я хотел бы сделать это чистым способом (если такой способ вообще существует).

1 ответ1

0

Присмотритесь к сообщению об ошибке gitlab: «Вам не разрешено принудительно отправлять push-код в защищенную ветку в этом проекте». По умолчанию gitlab определяет master ветвь как "защищенную", и администраторы проекта могут дополнительно назначать другие защищенные ветки. Таким образом, вам нужно найти способ избежать принудительного толкания master .

Это не та ситуация, с которой я лично сталкивался раньше, но первое, что я бы попробовал, было бы (после резервного копирования моего локального репо, на всякий случай!) чтобы создать новую ветку на вашем локальном мастере, извлеките из gitlab и объедините его мастер с вашим, вернитесь к gitlab (который больше не требует, чтобы master был принудительным нажатием), а затем объедините новую созданную вами ветку (вашу старую мастер) в мастер Gitlab.

С другой стороны, если ваше локальное хранилище находится в том состоянии, в котором вы хотите быть "текущим" в gitlab, есть также возможность удалить (или переименовать) проект в gitlab, а затем создать новый, чтобы заменить его, основываясь на вашей локальной копии. , Это позволит избежать (повторно?)объедините две версии проекта и (в отличие от копирования / вставки содержимого) сохраните всю историю, как это известно вашему локальному репо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .