Розгалуження сховища Git від GitHub до GitLab


95

Припустимо, що я хотів би застосувати виправлення для проекту когось іншого. Цей проект знаходиться на GitHub.

Я міг створити форк на GitHub і реалізувати виправлення.

Однак я хотів би створити свій форк на GitLab, а не на GitHub.

Це можливо? Як?

Я прочитав цю статтю: https://about.gitlab.com/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/

У всякому разі, я не впевнений, що мені робити у моєму випадку.

  • Чи слід мені просто якось створити форк на GitLab проекту з GitHub?
  • Або я повинен створити дзеркало на GitLab проекту з GitHub?
  • Або я повинен створити дзеркало на GitLab, а потім розгалужити дзеркало?
  • Або я повинен робити щось зовсім інше?

Який правильний підхід.

Дякую.

ОНОВЛЕННЯ

Дзеркальне відображення сховища на GitLab, ймовірно, не має сенсу. Я можу створити дзеркало МООГО сховища GitHub на GitLab, але не можу створити дзеркало сховища когось іншого.

https://docs.gitlab.com/ee/workflow/repository_mirroring.html

Це те, що я зробив до цього часу:

Я клонував оригінальний проект GitHub на свою локальну машину. Я виправив виправлення на нову гілку в моєму локальному сховищі. Я створив порожній проект на GitLab. Я встановив початковий код у своєму локальному сховищі для цього порожнього проекту на GitLab і перемістив обидві гілки до GitLab. Я створив у своєму локальному сховищі репозиторій GitHub.

Коли я хочу отримати нові коміти з вихідного сховища GitHub до сховища на GitLab (тобто синхронізувати сховища), я можу зробити це, використовуючи моє локальне репо як проміжний крок. Однак прямого зв'язку між репо на GitHub та репо на GitLab немає. Чи правильно налаштовано моє налаштування? Чи є якась різниця, якщо я роблю форк на GitHub?

Відповіді:


125

Якщо ви просто хочете відстежувати зміни, спочатку створіть порожнє сховище в GitLab (або будь-що інше, що ви можете використовувати) і клонуйте його на свій комп’ютер.

Потім додайте проект GitHub як « вгору по течії » пульт дистанційного керування з:

git remote add upstream https://github.com/user/repo

Тепер ви можете отримати та витягнути з вищого потоку, якщо будуть якісь зміни. (Ви також можете натиснути або об’єднати його, якщо у вас є права доступу.)

git pull upstream master

Нарешті, поверніться до власного сховища GitLab:

git push origin master

Якщо ви не хочете вручну витягувати вихідне / push-джерело, GitLab пропонує можливість дзеркального відображення в Налаштуваннях => Сховище => Віддзеркалення сховищ.


15
Я просто хотів би доповнити цю відповідь, чому це правильний підхід. "Forking" - це концепція, створена GitHub, отже, існує лише на GitHub, тим не менш корисна. Якщо ви розглядаєте чистий git (наприклад, чистий git-сервер, який працює десь у вашій мережі), це було б як клонування репо на ваш власний сервер, а потім клонування цього на ваш локальний комп'ютер. Тоді ви додали б оригінальне репо як вихідне місце локально. Я вважаю, що GitHub робить це за лаштунками.
Бруно Фінгер

9
Просто хочу додати , що розгалуження робить існує на GitLab см тут , наприклад.
bellackn

1
Мені довелося скористатися: витягніть майстра вгору за течією
allow-non-related

Як подати запит на витяг пізніше?
Ерік Аронесті,

1
@ErikAronesty Це складніше, оскільки "Запити на витяг" - це не git, а GitHub. Один із способів зробити це - розгалужити копію на GitHub і додати ваш роздільний репо як інший пульт, скажімо git remote add upstream-fork git@github.com:myuser/repo. Тоді справа лише в тому, щоб git push upstream-fork masterподати свій запит на витяг через сайт GitHub.
Кріс Уоттс

18

Шлях лише для браузера:

  1. Створіть новий проект у Gitlab (просто порожній проект з назвою - це нормально)
  2. Зайдіть в Налаштування -> Репозиторій
  3. Введіть URL-адресу GitHub у розділі «Дзеркальне відображення сховищ»
  4. Переконайтеся, що для "Напрямок дзеркала" встановлено значення "Потягніть"
  5. Натисніть кнопку "Дзеркальне сховище"
  6. Натисніть піктограму синхронізації поруч із записом, що з’явиться

У мене немає ліцензії Enterprise Edition, тобто я не бачу "Дзеркальне відображення сховищ" з кроку 3. У будь-якому випадку, якби я мав таку ліцензію, чи міг я створити дзеркало сховища GitHub когось іншого?
Cimlman

1
@Cimlman Це дивно, адже я також маю безкоштовну ліцензію. Може, перевірити? Має бути третім у "Налаштування-> Сховище". Щоб зрозуміти: налаштування на бічній панелі, а не меню профілю.
aksh1618

Після натискання Налаштування -> Сховище на бічній панелі я бачу розділи Захищені гілки, Захищені теги, Розгортання ключів, Розгортання токенів.
Cimlman

2
@Cimlman Чи використовуєте ви спеціальний / локальний екземпляр gitlab? У мене є набагато більше можливостей в особистому, основному обліковому записі на gitlab.com
aksh1618,

1
Ми використовуємо самокеровану установку, версія 10.7.2. Останній випуск - 11.6. Добре, це хороший момент. :) Я не можу спробувати ваше рішення на нашому GitLab. У будь-якому випадку, проблема для мене зараз застаріла. Вся справа в нашому власному виправленні помилок сторонньої бібліотеки. Однак виправлення помилки вже включено до офіційного випуску цієї бібліотеки.
Кімлман,

0

Можливо розгалуження приватного сховища github.

  1. Клацніть на новий проект
  2. Виберіть Імпорт
  3. Виберіть github
  4. OAuth2 використовується для автентифікації та автоматичного створення програми gitlab
  5. Виберіть проект для розгалуження

^ Я щойно зробив це з приватним репо на github, успішно імпортованому (включаючи гілки тощо). Імпортний проект автоматично залишається приватним;)


2
Для імпорту проекту потрібен "Особистий маркер доступу". Я спробував створити його на GitHub. Здається, ця функція корисна, коли я хочу створити проект на GitLab зі свого проекту на GitHub. Чи правильно це припущення? Питання полягає в розгалуженні проекту GitHub когось іншого.
Cimlman

2
-1, тому що, і як зазначається в попередньому коментарі, питання стосується форкінгу проекту github когось іншого. Інструкції, наведені у цій відповіді, не спрацюють у такому випадку.
Нікос Александріс

1
@NikosAlexandrisis ти впевнений? Ви не можете створити маркер доступу для свого облікового запису та отримати доступ до чужого репо, до якого ви мали доступ для читання? (наприклад, кожен публічний репо)
DGoiko

0

Замість форкінгу ви можете імпортувати будь-яке загальнодоступне сховище GitHub, використовуючи лише веб-інтерфейс:

  1. На інформаційній панелі GitLab натисніть Новий проект
  2. Перейдіть на вкладку Імпорт проекту
  3. Натисніть на Repo по URL кнопки
  4. Заповніть "URL-адресу сховища Git" та інші поля проекту
  5. Натисніть Створити проект, щоб розпочати процес імпорту
  6. Після завершення ви будете перенаправлені на ваш щойно створений проект

Цей метод застосовувався нещодавно, і він працює у будь-якому загальнодоступному сховищі, навіть без облікового запису GitHub. Джерело інформації див. На цій сторінці документів GitLab .


1
В ПОРЯДКУ. І якщо нові коміти додаються до вихідного сховища на GitHub, чи можу я просто об'єднати зміни до сховища на GitHub? Це складна операція, і можливо, її неможливо зробити без проміжного сховища (див. Останній абзац питання).
Кімлман,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.