Перенести репозитории git из GitLab в GitHub - можем ли мы, как и подводные камни (если таковые имеются)?

204

Можно ли перенести репозитории из GitLab в GitHub, если это необходимо. Если так, как именно я могу сделать то же самое?

Кроме того, есть ли какие-либо подводные камни в таких действиях или меры предосторожности, о которых я должен помнить, прежде чем сделать это, учитывая, что я могу в конечном итоге перенести их на GitHub (поскольку в данный момент у меня больше возможностей, которые могут оказаться полезными для моего проекта ).

Бодхисаттвы
источник

Ответы:

210

Вы можете перенести их (просто добавив пульт в репозиторий GitHub и нажав их)

  • создать пустой репо на GitHub
  • git remote add github https://yourLogin@github.com/yourLogin/yourRepoName.git
  • git push --mirror github

История будет такой же.

Но вы потеряете контроль доступа (команды, определенные в GitLab с определенными правами доступа в вашем репо)

Если у вас возникли проблемы с https URL репозитория GitHub:

The requested URL returned an error: 403

Все, что вам нужно сделать, это ввести пароль GitHub, но ОП предлагает:

Тогда вам, возможно, придется продвинуться по ssh. Вы можете прочитать больше о том, как это сделать, здесь.

См. « Pushing to Git, возвращающий код ошибки 403, фатальный: HTTP-запрос не выполнен ».

VonC
источник
Спасибо Von - ваш ответ помог мне. Я только добавил немного к вашему ответу о точном git remote add cmd и продвижении по ssh, если это необходимо. Надеюсь, что все в порядке.
бодхисаттва
@boddhisattva Это нормально, но я вижу, что ваше редактирование было отклонено. Я добавил это обратно в ответ сам.
VonC
5
Любые комментарии по импорту проблем и ярлыков? Можно ли импортировать что-либо, кроме кода, с помощью функции push and push? Спасибо.
@YakovK Я не знаю об автоматическом процессе с учетом PR и проблем. По крайней мере, PR в GitHub - это ветви (см. Stackoverflow.com/a/30542987/6309 ), так что их можно импортировать.
VonC
1
@kiki будет выдвигать все локальные ветки, но если ваше локальное хранилище само по себе является клоном, в качестве локальной ветки по умолчанию оно будет иметь только master. Вы должны сначала создать другие локальные ветки после их соответствующих удаленных отслеживающих веток, прежде чем использовать push --mirror. stackoverflow.com/a/18911322/6309 . См. Также альтернативу, упомянутую на stackoverflow.com/a/24099141/6309 (последнее предложение)
VonC
149

Это очень легко с помощью импорта художественного хранилища Вход в github.com,

На боковой стороне изображения профиля вы найдете +нажатие кнопки, после чего появится опция import repository. Вы найдете страницу, как это. введите описание изображения здесь Требуется URL-адрес клонирования вашего старого репозитория, который в вашем случае является URL-адресом репозитория gitlab. затем выберите Владелец, а затем введите имя для этого репо и нажмите кнопку, чтобы начать импорт.

Манодж
источник
33
Это очень удобно, что GitHub добавил это. Тем не менее, он не будет работать, если это внутренний GitLab за брандмауэром, который представляет собой большой пример использования GitLab.
Abalter
7
Просто быстрое примечание для всех, кто использует опцию импорта. Мне пришлось отключить MFA на GitLab, чтобы это работало.
День Д
2
Это отлично работает. Гораздо лучше, чем принятый ответ
LnxSlck
Как, если я хочу импортировать ветку?
coderInrRain
1
Импортированный репозиторий не обязательно должен быть общедоступным, поскольку github сделал добавление частных репозиториев бесплатным.
Shrey Garg
7

У меня возникла противоположная проблема, и, наконец, мне пришлось создать собственный скрипт оболочки bash для компании, чтобы перенести сотню репозиториев из Github в Gitlab из-за изменения политики компании.
Скрипт использует Gitlab API для удаленного создания репо и помещает в него репозиторий Github. Файл README.md пока отсутствует, но файл sh хорошо документирован.
То же самое можно сделать противоположным образом, как я себе представляю. Надеюсь, это может помочь.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh

SamiX
источник
2

Если у вас включен MFA на GitLab, вам нужно перейти в «Настройки репозитория / Репозиторий -> Развернуть ключи» и создать его, а затем использовать его как логин при импорте репо на GitHub.

Алекс Мокрушин
источник