Ein vorhandenes Git-Projekt in GitLab importieren?


147

Ich habe einen Account einer Gitlab-Installation, in der ich das Repository "ffki-startseite" erstellt habe.

Jetzt möchte ich git://freifunk.in-kiel.de/ffki-startseite.gitdas Repository mit allen Commits und Zweigen in dieses Repository klonen , damit ich in meinem eigenen Bereich daran arbeiten kann.

Wie kann ich es importieren?


3
Eine neue Funktion von gitlab, erstellen Sie ein Projekt und gehen Sie dann zur Projektseite. Hier sehen Sie grundlegende Anweisungen.
Martijn van Wezel

Mögliches Duplikat der Spiegelung
Kelvin

Die grundlegenden Anweisungen sind in den neueren Versionen von Gitlab weg. Könnte jemand, der sie kopiert hat, sie hier kopieren?
Jdevora

Antworten:


156

Ich konnte mein Projekt zusammen mit allen Commits, Zweigen und Tags über die folgenden lokal auf meinem Computer ausgeführten Befehle vollständig in gitlab exportieren:

Zur Veranschaulichung meines Beispiels verwende ich https://github.com/raveren/kint als Quell-Repository, das ich in gitlab importieren möchte. Ich habe zuvor ein leeres Projekt mit dem Namen Kint(unter dem Namespace raveren) in gitlab erstellt und es hat mir mitgeteilt, dass die http git-URL des neu erstellten Projekts dort http://gitlab.example.com/raveren/kint.git lautet

Die Befehle sind betriebssystemunabhängig.

In einem neuen Verzeichnis:

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

Wenn Sie nun ein lokal geklontes Repository haben, das Sie weiterhin mit der neuen Fernbedienung verwenden möchten, führen Sie dort einfach die folgenden Befehle * aus:

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

* Dies setzt voraus, dass Sie Ihren Remote-Master nicht umbenannt haben origin, andernfalls ändern Sie die ersten beiden Zeilen, um sie wiederzugeben.


1
Es gibt mir den Fehler: remote: GitLab: Sie dürfen Push-Code in diesem Projekt nicht in einen geschützten Zweig zwingen. Bis 10.0.100.89:8496/project/james-project.git ! [Remote abgelehnt] Master -> Master (Pre-Receive Hook abgelehnt)
James Hirschorn

4
Ich musste geschützte Zweige unter Einstellungen -> Repository deaktivieren, damit dies funktioniert.
James Hirschorn

Siehe meine Frage, warum Sie
Martijn van Wezel

108

Fügen Sie die neue Gitlab-Fernbedienung zu Ihrem vorhandenen Repository hinzu und drücken Sie:

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

Ich musste es mit Gewalt schieben, weil ich schon in gitLab herumgespielt habe : git push gitlab master -f. Jetzt habe ich das ganze Repo mit allen Commits in meinem neuen GitLab;) danke
rubo77

19
Würdest du nicht einen Spiegel machen müssen? Was wäre, wenn Sie andere Zweige als Master hätten?
Slhck

7
Ja, wenn Sie das tun, was OP vorschlägt, verlieren
Raveren

Der Gitlab-Projektimport lädt das Remote-Repo von einer URL, wenn Sie das Projekt erstellen. Enthält Anweisungen zum Importieren von SVN-Repos.
Rickfoosusa

1
Git Remote hinzufügen Gitlab URL-zu-Gitlab-Repo Git Push Gitlab Master
Saurabh

23

Zu halten ALLE TAGS UND BRANCHEN

Führen Sie diesen Befehl einfach in einem aus 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

Nicht alle Zweige kopieren
Martijn van Wezel

19

Hier sind die Schritte, die vom Gitlab bereitgestellt werden:

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

Dies wird nur Master und nicht andere Zweige schieben
Allkenang

18

Dies ist ein grundlegender Schritt, um ein Repo an einen neuen Ort zu verschieben. Ich benutze diese Sequenz die ganze Zeit. Mit --bare werden keine Quelldateien angezeigt .

Öffnen Sie Git Bash.
Erstellen Sie einen nackten Klon des Repositorys.

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

Mirror-Push in das neue Repository.

cd old-repository.git

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

Entfernen Sie das temporäre lokale Repository, das Sie in Schritt 1 erstellt haben.

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

Warum spiegeln? Siehe Dokumentation zu git: https://git-scm.com/docs/git-push

--all Push alle Zweige (dh Refs unter Refs / Heads /); kann nicht mit anderen verwendet werden.

--mirror Gibt an, dass alle Refs unter Refs / (einschließlich, aber nicht beschränkt auf Refs / Heads /, Refs / Remotes / und Refs / Tags /) in das Remote-Repository gespiegelt werden, anstatt jeden Ref zu benennen, der gepusht werden soll. Neu erstellte lokale Refs werden an das Remote-Ende verschoben, lokal aktualisierte Refs werden auf dem Remote-Ende zwangsweise aktualisiert und gelöschte Refs werden vom Remote-Ende entfernt. Dies ist die Standardeinstellung, wenn die Konfigurationsoption remote..mirror eingestellt ist.


Funktioniert auch mit Gitlab!
Handtuch

12

Rake Gitlab: Import: Repos ist möglicherweise eine geeignetere Methode für den Massenimport:

  • Kopieren Sie das nackte Repository unter repos_path( /home/git/repositories/group/repo.git). Der Verzeichnisname muss auf enden .gitund sich unter einem Gruppen- oder Benutzernamensraum befinden.
  • Lauf bundle exec rake gitlab:import:repos

Der Eigentümer ist der erste Administrator, und eine Gruppe wird erstellt, falls diese noch nicht vorhanden ist.

Siehe auch: Wie importiere ich ein vorhandenes Bare-Git-Repository in Gitlab?


Für diejenigen, die verwirrt sein können, ist das nackte Repository das Repository, das normalerweise an einem zentralen Ort (z. B. Github) vorhanden ist und NICHT den Ordner .git im Stammverzeichnis des Repositorys enthält. Dies ist nur dann eine bequeme Option, wenn Sie Zugriff auf den Server haben, auf dem das Bare-Repository gespeichert ist. Ansonsten ist die Antwort von @Raveren die beste Option.
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/*

Es ist besser, dies über ssh zu tun, da https möglicherweise nicht funktioniert


"Das https funktioniert möglicherweise nicht" Dies ist normalerweise nicht der Fall
Martijn van Wezel

Dies ist eine Sache, da HTTP-Verbindungen möglicherweise deaktiviert sind. Danke für die Antwort.
Micah

2

Verschieben eines Projekts von GitHub nach GitLab, einschließlich Problemen, Pull-Requests-Wiki, Meilensteinen, Labels, Versionshinweisen und Kommentaren

Es gibt eine gründliche Anleitung zu GitLab Docs:

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

tl; dr

  • Stellen Sie sicher, dass alle GitHub-Benutzer, die Sie GitLab-Benutzern zuordnen möchten, Folgendes haben:

    • Ein GitLab-Konto, das sich mit dem GitHub-Symbol angemeldet hat - oder -
    • Ein GitLab-Konto mit einer E-Mail-Adresse, die mit der öffentlichen E-Mail-Adresse des GitHub-Benutzers übereinstimmt
  • Klicken Sie in der oberen Navigationsleiste auf + und wählen Sie Neues Projekt.

  • Wählen Sie die Registerkarte Projekt importieren und dann GitHub.
  • Wählen Sie die erste Schaltfläche, um Ihre GitHub-Repositorys aufzulisten. Sie werden auf eine Seite auf github.com weitergeleitet, um die GitLab-Anwendung zu autorisieren.
  • Klicken Sie auf gitlabhq autorisieren. Sie werden zurück zur Importseite von GitLab weitergeleitet und alle Ihre GitHub-Repositorys werden aufgelistet.
  • Fahren Sie mit der Auswahl der zu importierenden Repositorys fort.

Aber bitte lesen Sie die GitLab Docs Seite für Details und Hooks!

(es ist nicht viel)


1

Gitlab ist ein bisschen nervig in dieser Funktion. Sie können viel Zeit bei der Fehlerbehebung verlieren, insbesondere wenn Ihr Projekt groß ist.

Die beste Lösung wäre die Verwendung des Erstellungs- / Import-Tools. Vergessen Sie nicht, Ihren Benutzernamen und Ihr Passwort einzugeben, da sonst nichts importiert wird.

Folge meinen Screenshots

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.