Remote-Repository anlegen¶
Ein bestehendes lokales Repository in GitLab anlegen und hochladen – ohne die GitLab-Oberfläche. GitLab erstellt das Projekt automatisch beim ersten Push an eine Adresse, die es noch nicht gibt (Push to create).
Voraussetzungen: lokales Repository mit mindestens einem Commit, Zugang zu GitLab per SSH-Schlüssel (oder Access Token für HTTPS).
Befehle¶
git remote add origin git@gitlab.com:<namespace>/<projekt>.git
git push -u origin main
| Befehl | Wirkung |
|---|---|
git remote add origin <url> |
hinterlegt die Adresse unter dem Namen origin |
git push -u origin main |
lädt main hoch; GitLab legt dabei das Projekt an. -u verknüpft main dauerhaft mit origin/main – danach genügen git push / git pull |
<namespace>: Dein Benutzername oder eine Gruppe (ggf. mit Untergruppen:gruppe/untergruppe).<projekt>: wird zu Pfad und Name des Projekts – Kleinbuchstaben, Ziffern,-,_,..
GitLab bestätigt in der Ausgabe:
remote: The private project <namespace>/<projekt> was successfully created.
Das Projekt ist privat. Sichtbarkeit, Anzeigename und Beschreibung lassen sich später in GitLab unter Settings › General ändern.
Kontrolle: git status meldet Your branch is up to date with 'origin/main'.
Varianten¶
| Fall | Anpassung |
|---|---|
| HTTPS statt SSH | Adresse https://gitlab.com/<namespace>/<projekt>.git; beim Push als Passwort ein Access Token mit Recht write_repository eingeben |
| eigener GitLab-Server | gitlab.com durch dessen Adresse ersetzen |
Branch heißt master |
git push -u origin master – oder vorher umbenennen: git branch -M main |
| alle Branches und Tags hochladen | git push -u origin --all und git push origin --tags |
| Projekt existiert bereits (leer) | dieselben Befehle, es wird nur hochgeladen |
Fehler¶
| Meldung | Ursache | Lösung |
|---|---|---|
remote origin already exists |
origin ist schon eingetragen |
Adresse ersetzen: git remote set-url origin <url> |
src refspec main does not match any |
noch kein Commit oder Branch heißt anders | git log --oneline, git branch --show-current |
Permission denied (publickey) |
SSH-Schlüssel nicht in GitLab hinterlegt | Schlüssel unter Preferences › SSH Keys eintragen; testen mit ssh -T git@gitlab.com |
Authentication failed (HTTPS) |
Passwort statt Token verwendet | Access Token (write_repository) verwenden |
You are not allowed to push code to this project bzw. project … could not be found |
Tippfehler im Namespace oder keine Berechtigung, in der Gruppe Projekte anzulegen | Namespace prüfen; in Gruppen die Rolle prüfen (je nach Gruppeneinstellung Developer oder Maintainer) |
! [rejected] … (fetch first) |
Projekt existiert bereits mit Inhalt (z.B. README) | git pull --rebase origin main, dann erneut git push -u origin main |
refusing to merge unrelated histories |
wie oben, Historien haben keinen gemeinsamen Anfang | git pull origin main --allow-unrelated-histories, dann pushen |