Імпортувати існуючий проект git в GitLab?


147

У мене є обліковий запис установки Gitlab, де я створив сховище "ffki-startseite"

Тепер я хочу клонувати сховище git://freifunk.in-kiel.de/ffki-startseite.gitдо цього сховища з усіма комісіями та гілками, тому я можу почати працювати над ним у власному обсязі.

Як я можу імпортувати його?


3
Нова функція gitlab, створити проект, а потім перейти на сторінку проекту. Тут ви побачите основні інструкції.
Martijn van Wezel


Основні інструкції відсутні в нових версіях Gitlab, чи міг би хтось, хто їх скопіював, скопіювати сюди?
jdevora

Відповіді:


156

Мені вдалося повністю експортувати мій проект разом із усіма комісіями , гілками та тегами до gitlab за допомогою наступних команд, що виконуються локально на моєму комп’ютері:

Щоб проілюструвати свій приклад, я буду використовувати https://github.com/raveren/kint в якості вихідного сховища, яке я хочу імпортувати в gitlab. Я заздалегідь створив порожній проект з іменем Kint(під простором імен raveren) у gitlab, і він сказав мені, що http git URL новоствореного проекту є http://gitlab.example.com/raveren/kint.git

Команди є агностичними.

У новому каталозі:

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror

Тепер, якщо у вас є локально клонований сховище, яке ви хочете використовувати з новим дистанційним, просто запустіть такі команди * там:

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all

* Це передбачає, що ви не перейменували віддаленого майстра origin, в іншому випадку змініть перші два рядки, щоб відобразити це.


1
Це дає мені помилку: remote: GitLab: Вам не дозволяється примушувати push-код до захищеної гілки цього проекту. До 10.0.100.89:8496/project/james-project.git ! [віддалений відхилений] майстер -> майстер (попередньо
отриманий

4
Мені довелося вимкнути захищені гілки в Налаштуваннях -> Репозиторії, щоб це працювати.
Джеймс Гіршорн

Дивіться моє запитання, чому ви використовуєте --mirror
Martijn van Wezel

108

Додайте новий віддалений gitlab до наявного сховища та натисніть:

git remote add gitlab url-to-gitlab-repo
git push gitlab master

Я повинен був штовхати його з силою, тому що я возився в gitLab вже: git push gitlab master -f. Зараз у мене є все репо з усіма зобов'язаннями в моєму новому GitLab;) дякую
rubo77

19
Вам не потрібно було б робити дзеркало? Що робити, якщо у вас були інші гілки, крім майстра?
slhck

7
так, виконуючи, як пропонує ОП, ви втрачаєте всі гілки (крім майстра) та теги
raveren

Імпорт проекту Gitlab завантажує віддалене репо з URL-адреси під час створення проекту. Включає інструкції з імпорту svn repos.
rickfoosusa

1
git remote додати gitlab url to-gitlab-repo git push gitlab master --mirror
Saurabh

23

Щоб зберегти ВСІ МЕТИ ТА ПІДТРИМКИ

Просто запустіть цю команду в existing Git repository

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab git@git.hutber.com:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags

Не копіюйте всі гілки
Martijn van Wezel

19

Ось етапи, які надає Gitlab:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags

Це тільки підштовхне майстра, а не інших гілок
allkenang

18

Це основний переїзд одного репо на нове місце. Я використовую цю послідовність весь час. З - без жодних вихідних файлів не буде видно.

Відкрийте Git Bash.
Створіть голий клон сховища.

git clone --bare https://github.com/exampleuser/old-repository.git

Дзеркальне натискання до нового сховища.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git

Видаліть тимчасовий локальний сховище, яке ви створили на кроці 1.

cd ../
rm -rf old-repository.git

Чому дзеркало? Дивіться документацію про git: https://git-scm.com/docs/git-push

- всі натисніть на всі гілки (тобто реф. під реф. / голови /); не можна використовувати з іншими.

--mirror Замість того, щоб називати кожен посилання для надсилання, вказує, що всі посилання на refs / (які включають, але не обмежуються цим, refs / heads /, refs / remote / та refs / tags /) відображаються у віддаленому сховищі. Нещодавно створені локальні рефери будуть висунуті до віддаленого кінця, локально оновлені посилання будуть сильно оновлюватися на віддаленому кінці, а видалені рефлекси будуть видалені з віддаленого кінця. Це за замовчуванням, якщо встановлено параметр конфігурації віддалений.


Працює і з gitlab!
рушник

12

rake gitlab: import: repos може бути більш підходящим методом масового імпорту:

  • скопіюйте голий сховище під repos_path( /home/git/repositories/group/repo.git). Ім’я каталогу має закінчуватися .gitі знаходитись у просторі імен групи або користувачів.
  • бігати bundle exec rake gitlab:import:repos

Власник буде першим адміністратором, і група буде створена, якщо вона ще не існує.

Дивіться також: Як імпортувати наявне голе сховище git у Gitlab?


Для тих, хто може заплутатися, оголене сховище - це сховище, яке зазвичай знаходиться в централізованому місці (наприклад, github), яке НЕ містить папку .git у корені сховища. Це лише зручний варіант, якщо у вас є доступ до сервера, де зберігається головий сховище. Інакше відповідь від @Raveren - найкращий варіант.
TinkerTenorSoftwareGuy

4
git clone --mirror git@github.com:username/repo-name.git

git remote add gitlab ssh://git@servername.com/username/repo.git

git push -f --tags gitlab refs/heads/*:refs/heads/*

Краще зробити це через ssh, https може не працювати


"https може не спрацювати", це зазвичай не відбувається
Martijn van Wezel

Це фактично, оскільки HTTP-з'єднання можуть бути відключені. Дякую за відповідь.
Міка

2

Переміщення проекту з GitHub до GitLab, включаючи проблеми, запити на тягнення Wiki, основні етапи, мітки, примітки до випуску та коментарі

Існує ретельна інструкція щодо Документів GitLab:

https://docs.gitlab.com/ee/user/project/import/github.html

тл; д-р

  • Переконайтесь, що будь-які користувачі GitHub, які ви хочете зробити карту для користувачів GitLab, мають:

    • Обліковий запис GitLab, який увійшов до системи за допомогою піктограми GitHub - або -
    • Обліковий запис GitLab з електронною адресою, яка відповідає загальнодоступній електронній адресі користувача GitHub
  • На верхній панелі навігації натисніть + та виберіть Новий проект.

  • Перейдіть на вкладку Імпорт проекту, а потім виберіть GitHub.
  • Виберіть першу кнопку для списку ваших сховищ GitHub. Ви перенаправлені на сторінку на github.com, щоб авторизувати додаток GitLab.
  • Клацніть Авторизувати gitlabhq. Ви перенаправлені назад на сторінку імпорту GitLab, і всі ваші сховища GitHub перераховані.
  • Продовжуйте вибирати, які сховища потрібно імпортувати.

Але, будь ласка, прочитайте сторінку GitLab Документи, щоб отримати деталі та гачки!

(це не так багато)


1

Gitlab трохи помилився на цій функції. Ви можете втратити багато часу, роблячи вирішення неполадок, особливо якщо ваш проект якийсь великий.

Найкращим рішенням буде використання інструменту створення / імпорту, не забудьте ввести своє ім’я користувача та пароль, інакше він взагалі нічого не імпортує.

Слідкуйте за моїми скріншотами

введіть тут опис зображення

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