Перенести сховища 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-адресою репортажу GitHub:

The requested URL returned an error: 403

Все, що вам потрібно зробити - це ввести пароль GitHub, але ОП пропонує:

Тоді вам може знадобитися просунути це ssh way. Детальніше про те, як це зробити, ви можете прочитати тут.

Див. " Натискання на повернення Git код помилки 403 фатально: HTTP-запит не вдався ".


Спасибі Вон - ваша відповідь зробила для мене хитрість. Я лише доклав трохи вашої відповіді щодо точного git remote, додайте cmd та підштовхуючи речі ssh у разі потреби. Сподіваюся, що це нормально.
боддхісаттва

@boddhisattva Це нормально, але я бачу, що ваша редакція була відхилена. Я сам це додав у відповідь.
VonC

5
Будь-які коментарі щодо питань імпорту та міток? Чи можна імпортувати що-небудь, крім коду, "pull and push"? Дякую.

@YakovK Мені не відомий автоматичний процес з урахуванням PR та проблем. Принаймні, PR в GitHub - це філії (див. Stackoverflow.com/a/30542987/6309 ), щоб їх можна було імпортувати.
VonC

1
@kiki він виштовхне всі локальні гілки, але якщо ваше місцеве репо є самим клоном, він матиме лише головне місце, оскільки його локальна перевірена гілка за замовчуванням. Перш ніж використовувати, потрібно спочатку створити інші локальні гілки після їх віддалених гілок дистанційного відстеження push --mirror. stackoverflow.com/a/18911322/6309 . Дивіться також альтернативу, згадану на сайті stackoverflow.com/a/24099141/6309 (останнє речення)
VonC

149

Це дуже просто завдяки функції імпортування сховища ввійти до github.com,

Збоку зображення профілю ви знайдете +натискання кнопки, на якій з'явиться можливість import repository. ви знайдете подібну сторінку. введіть тут опис зображення Потрібна URL-адреса клонування вашого старого сховища, яка є URL-адресою gitlab repo у вашому випадку. потім виберіть Власника, а потім введіть ім'я цього репо і натисніть кнопку, щоб розпочати імпорт.


33
Це дуже зручно, що GitHub додав це. Однак він не працюватиме, якщо це внутрішній GitLab за брандмауером, що представляє собою великий варіант використання для GitLab.
abalter

7
Просто коротка примітка для всіх, хто використовує опцію імпорту. Мені довелося відключити MFA на GitLab, щоб це працювало.
D-Day

2
Це чудово працює. Набагато краще, ніж прийнята відповідь
LnxSlck

Як якщо я хочу імпортувати філію?
coderInrRain

1
Імпортне сховище не обов’язково має бути загальнодоступним, оскільки github зробив додавання приватних сховищ безкоштовно.
Шрей Гарг


7

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


2

Якщо у вас ввімкнено MFA в GitLab, слід перейти до Налаштування репозиторію / сховища -> Розгортати ключі та створити його, а потім використовувати його як логін під час імпорту репо на GitHub

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.