Перенос репозитория с GitHub на GitLab может показаться сложной задачей, особенно если в проекте есть история, ветки, issues и CI/CD. Но на самом деле при правильном подходе это можно сделать плавно и без потерь данных. В этой статье пошагово разберём, как выполнить такую миграцию и подготовить проект к работе на новой платформе.

📌 Что можно перенести из GitHub в GitLab
Перед началом важно понимать, какие данные обычно поддерживаются при миграции:
- исходный код и ветки
- описание репозитория и collaborators
- issues и привязанные комментарии
- pull requests (в GitLab называются merge requests)
- wiki-страницы и метки
- другие связанные метаданные проекта
🧰 Что нужно для начала миграции
Чтобы успешно перенести проект, убедитесь, что:
✔ у вас есть аккаунт GitLab и права Maintainer на группу или пространство, куда вы будете импортировать проект;
✔ у вас есть доступ к репозиторию на GitHub, который вы хотите перенести;
✔ вы готовы авторизовать GitLab для доступа к данным GitHub, если мигрируете через веб-импорт.
📦 Шаг 1. Создаём проект в GitLab
- Войдите в свой аккаунт GitLab.
- Нажмите «New project» / «Создать проект».
- Выберите вкладку Import project / Импорт проекта.

🔄 Шаг 2. Импорт репозитория из GitHub
- В разделе «Import project» выберите GitHub как источник.
- Нажмите кнопку Authenticate with GitHub и подтвердите доступ GitLab к вашему GitHub-аккаунту.
- При необходимости используйте Personal Access Token с правами repo для авторизации.
- После авторизации выберите репозитории, которые хотите импортировать.
- Укажите, куда в GitLab вы хотите перенести проект — например, в группу или в своё пространство.
- Нажмите Import / Импортировать и дождитесь завершения процесса.
Кликнув Import, вы увидите прогресс загрузки и статусы переноса. По окончании проект появится в вашем GitLab-аккаунте с тем же набором веток и историй, которые были в GitHub.
🔧 Перевод GitHub Actions в GitLab CI/CD
GitHub Actions не запускаются автоматически после импорта репозитория. Их нужно перенести вручную:
- Откройте импортированный проект в GitLab.
- В корне проекта создайте файл
.gitlab-ci.yml. - Добавьте в него конфигурацию, описывающую pipeline и задания (jobs), аналогичные тому, что было в GitHub Actions.
Ниже пример того, как можно адаптировать задания по lint, smoke и unit-тестам:
stages:
- test
lint:
image: python:3.10
stage: test
script:
- flake8 .
unit:
image: python:3.10
stage: test
script:
- pytest tests/
smoke:
image: python:3.10
stage: test
script:
- python setup.py install
- reddit-sentiment --help
Такой pipeline будет запускаться в GitLab CI/CD аналогично тому, как это происходило в GitHub Actions.
🧠 Полезные советы при миграции
🧩 Проверьте соответствие ролей
GitHub и GitLab используют разные названия ролей, поэтому убедитесь, что права доступа пользователей настроены корректно после миграции.
📎 Проверяйте данные
После переноса проверьте, что:
- все issues и merge requests перенесены;
- комментарии и вики-страницы доступны;
- история коммитов сохранилась.
📦 Альтернативный способ: ручной перенос через Git
Если по каким-то причинам стандартный импорт не подходит, можно сделать перенос вручную:
- Склонируйте репозиторий с GitHub:
git clone https://github.com/username/repo.git - Перейдите в корень проекта и добавьте новый remote для GitLab:
git remote add gitlab https://gitlab.com/username/repo.git - Отправьте весь код и ветки:
git push gitlab --all git push gitlab --tags
Это более универсальный способ, хотя в нём не переносится metadata (issues, pull request и т. п.).
Связанный материал:
Если вы активно работаете с Git и автоматизацией, рекомендуем также прочитать статью:
👉 «Как искать код в проектах с помощью grep: базовые и продвинутые приёмы»
В ней подробно разобрано, как быстро находить нужные файлы, команды и конфигурации в больших репозиториях — это особенно полезно после миграции проекта с GitHub на GitLab, когда нужно проверить CI/CD-скрипты, переменные окружения и структуру кода.
📌 Итог
Перенос проекта с GitHub в GitLab можно выполнить быстро и безболезненно, если следовать следующей последовательности:
- создать проект в GitLab;
- импортировать репозиторий через встроенный инструмент;
- вручную адаптировать CI/CD;
- проверить, что всё перенесено корректно.
Такой подход помогает сохранить историю проекта, ветки и ключевые данные, а GitLab предоставляет мощные возможности для управления DevOps-процессами.