Zaimportować istniejący projekt git do GitLab?


147

Mam konto instalacji Gitlab, w której utworzyłem repozytorium „ffki-startseite”

Teraz chcę sklonować repozytorium git://freifunk.in-kiel.de/ffki-startseite.gitdo tego repozytorium ze wszystkimi zatwierdzeniami i gałęziami, aby móc rozpocząć pracę nad nim we własnym zakresie.

Jak mogę to zaimportować?


3
Nowa funkcja gitlab, utwórz projekt, a następnie przejdź do strony projektu. Tutaj zobaczysz podstawowe instrukcje.
Martijn van Wezel


Podstawowe instrukcje zniknęły w nowszych wersjach Gitlab. Czy ktoś, kto je skopiował, mógł je skopiować tutaj?
jdevora

Odpowiedzi:


156

Udało mi się w pełni wyeksportować mój projekt wraz ze wszystkimi zatwierdzeniami, gałęziami i tagami do gitlab za pomocą następujących poleceń uruchamianych lokalnie na moim komputerze:

Aby zilustrować mój przykład, użyję https://github.com/raveren/kint jako repozytorium źródłowego, które chcę zaimportować do gitlab. Wcześniej utworzyłem pusty projekt o nazwie Kint(pod przestrzenią nazw raveren) w gitlab i powiedział mi, że http git url nowo utworzonego projektu jest http://gitlab.example.com/raveren/kint.git

Polecenia są niezależne od systemu operacyjnego.

W nowym katalogu:

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

Teraz, jeśli masz lokalnie sklonowane repozytorium, którego chcesz nadal używać z nowym pilotem, po prostu uruchom tam następujące polecenia *:

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

* Zakłada się, że nie originzmieniłeś nazwy swojego zdalnego urządzenia głównego z , w przeciwnym razie zmień pierwsze dwie linie, aby to odzwierciedlić.


1
Daje mi to błąd: remote: GitLab: Nie możesz wymusić wypychania kodu do chronionej gałęzi w tym projekcie. Do 10.0.100.89:8496/project/james-project.git ! [zdalne odrzucenie] master -> master (odrzucono hak przed
odbiorem

4
Musiałem wyłączyć chronione gałęzie w Ustawienia -> Repozytorium, aby to zadziałało.
James Hirschorn

Zobacz moje pytanie, dlaczego używałbyś
Martijn van Wezel

108

Dodaj nowego pilota gitlab do istniejącego repozytorium i wypchnij:

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

Musiałem wcisnąć go w życie, bo bawiła się wokół w gitLab już: git push gitlab master -f. Teraz mam całe repozytorium ze wszystkimi zatwierdzeniami w moim nowym GitLabie;) dzięki
rubo77

19
Czy nie musiałbyś zrobić lustra? Co by było, gdybyś miał inne gałęzie niż master?
slhck

7
tak, robiąc to, co sugeruje OP, tracisz wszystkie gałęzie (z wyjątkiem master) i tagi
raveren

Import projektu Gitlab załaduje zdalne repozytorium z adresu URL podczas tworzenia projektu. Zawiera instrukcje dotyczące importowania repozytoriów svn.
rickfoosusa

1
git remote add gitlab url-to-gitlab-repo git push gitlab master --mirror
Saurabh

23

Aby zachować WSZYSTKIE TAGI I ODDZIAŁY

Po prostu uruchom to polecenie w pliku 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

Nie kopiuj wszystkich oddziałów
Martijn van Wezel

19

Oto kroki dostarczone przez 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

To tylko popchnie mistrza, a nie inne gałęzie
allkenang

18

To podstawowy ruch jednego repozytorium do nowej lokalizacji. Używam tej sekwencji przez cały czas. Z --bare żadne pliki źródłowe nie będą widoczne.

Otwórz Git Bash.
Utwórz czysty klon repozytorium.

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

Mirror-push do nowego repozytorium.

cd old-repository.git

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

Usuń tymczasowe repozytorium lokalne utworzone w kroku 1.

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

Dlaczego lustro? Zobacz dokumentację git: https://git-scm.com/docs/git-push

--all Wepchnij wszystkie gałęzie (tj. refs pod refs / heads /); nie może być używany z innymi.

--mirror Zamiast nazywać każdy ref do wypchnięcia, określa, że ​​wszystkie referencje w refs / (które obejmują, ale nie ograniczają się do refs / heads /, refs / remotes / i refs / tags /), mają być dublowane w zdalnym repozytorium. Nowo utworzone lokalne referencje zostaną wypchnięte na zdalny koniec, lokalnie zaktualizowane referencje zostaną wymuszone zaktualizowane na zdalnym końcu, a usunięte referencje zostaną usunięte ze zdalnego końca. Jest to ustawienie domyślne, jeśli ustawiona jest opcja konfiguracyjna remote..mirror.


Działa również z gitlabem!
ręcznik

12

rake gitlab: import: repo może być bardziej odpowiednią metodą do masowego importu:

  • skopiuj czyste repozytorium pod repos_path( /home/git/repositories/group/repo.git). Nazwa katalogu musi kończyć się na .giti znajdować się pod przestrzenią nazw grupy lub użytkownika.
  • biegać bundle exec rake gitlab:import:repos

Właściciel będzie pierwszym administratorem, a grupa zostanie utworzona, jeśli jeszcze nie istnieje.

Zobacz także: Jak zaimportować istniejące repozytorium Git do Gitlab?


Dla tych, którzy mogą być zdezorientowani, nagie repozytorium jest repozytorium zwykle umieszczonym w scentralizowanej lokalizacji (np. Github), które NIE zawiera folderu .git w katalogu głównym repozytorium. Jest to wygodna opcja tylko wtedy, gdy masz dostęp do serwera, na którym przechowywane jest czyste repozytorium. W przeciwnym razie najlepszą opcją jest odpowiedź @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/*

Lepiej jest to zrobić przez ssh, https może nie działać


„https może nie działać” to normalnie nie działa
Martijn van Wezel

To jest rzecz w rzeczywistości, ponieważ połączenia HTTP mogą być wyłączone. Dziękuję za odpowiedź.
Micah

2

Przenoszenie projektu z GitHub do GitLab, w tym problemy, prośby o ściągnięcie Wiki, kamienie milowe, etykiety, uwagi do wydania i komentarze

Istnieje dokładna instrukcja dotycząca GitLab Docs:

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

tl; dr

  • Upewnij się, że wszyscy użytkownicy GitHub, których chcesz zmapować na użytkowników GitLab, mają:

    • Konto GitLab, które zalogowało się za pomocą ikony GitHub - lub -
    • Konto GitLab z adresem e-mail zgodnym z publicznym adresem e-mail użytkownika GitHub
  • Na górnym pasku nawigacyjnym kliknij + i wybierz Nowy projekt.

  • Wybierz kartę Importuj projekt, a następnie wybierz GitHub.
  • Wybierz pierwszy przycisk, aby wyświetlić swoje repozytoria GitHub. Nastąpi przekierowanie do strony na github.com w celu autoryzacji aplikacji GitLab.
  • Kliknij Autoryzuj gitlabhq. Nastąpi przekierowanie z powrotem na stronę importu GitLab, a wszystkie repozytoria GitHub są wymienione.
  • Przejdź do wybierania repozytoriów do zaimportowania.

Ale proszę przeczytaj stronę GitLab Docs, aby uzyskać szczegółowe informacje i podpowiedzi !

(to nie jest dużo)


1

Gitlab ma trochę błędów w tej funkcji. Możesz stracić dużo czasu na rozwiązywanie problemów, szczególnie jeśli twój projekt jest duży.

Najlepszym rozwiązaniem byłoby użycie narzędzia do tworzenia / importu, nie zapomnij podać nazwy użytkownika i hasła, w przeciwnym razie nic nie zaimportuje.

Śledź moje zrzuty ekranu

wprowadź opis obrazu tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.