image: git-logo.png kind: reference

Git und GitLab: Zugang und Veröffentlichen

Was du einmal einrichtest, damit dein Workspace bei GitLab Repositories klonen und deine Arbeit veröffentlichen kann, und was du tust, wenn Git einen Push ablehnt. Die Sandboxes für Datenstrukturen, Sortieren und die CPU binden diese Abschnitte ein.

Im Workspace ist ~ dein Ordner /workspace. ~/.ssh ist also /workspace/.ssh.

1. Einmal einrichten

SSH-Schlüssel für GitLab

Mit einem SSH-Schlüssel meldet sich dein Workspace beim GitLab-Server an, ohne dass du jedes Mal ein Passwort eingibst. Melde dich zuerst auf git.nhcham.org an. Prüfe dann im Terminal, ob du schon einen Schlüssel hast:

ls ~/.ssh/id_ed25519.pub

Erscheint No such file or directory, erzeugst du einen neuen. Bestätige den vorgeschlagenen Speicherort mit Enter; die Passphrase darfst du im Workspace leer lassen und noch zweimal Enter drücken:

ssh-keygen -t ed25519 -C "Vorname Nachname"

Zeige nun den öffentlichen Schlüssel an und kopiere die ganze Zeile, die mit ssh-ed25519 beginnt:

cat ~/.ssh/id_ed25519.pub

In GitLab gehst du oben rechts auf dein Profilbild und dann auf Edit profile → Access → SSH keys → Add new key. Füge die Zeile bei Key ein, gib als Titel zum Beispiel Workspace an und speichere.

Die Datei ~/.ssh/id_ed25519 ohne .pub ist dein privater Schlüssel. Den kopierst du nie und lädst ihn nirgendwo hoch.

Teste die Verbindung. Beim ersten Mal fragt SSH nach, ob du dem Server vertraust; antworte mit yes. Danach begrüßt dich GitLab mit deinem Benutzernamen:

ssh -T git@git.nhcham.org

Meldet SSH Permission denied (publickey), fehlt der Schlüssel in GitLab, oder du hast eine andere Zeile kopiert als die aus id_ed25519.pub.

Git sagen, wer du bist

Jeder Commit trägt einen Namen und eine E-Mail-Adresse. Trage deinen echten Namen und die E-Mail-Adresse deines GitLab-Kontos ein:

git config --global user.name "Vorname Nachname"
git config --global user.email "deine.mail@example.org"

Das ist in jedem Workspace nur einmal nötig. Ohne diese Angaben weigert sich Git zu committen.

2. Wenn Git den Push ablehnt

In einem Klassen-Repository veröffentlichen viele. Hat jemand kurz vor dir gepusht, lehnt Git deinen Push mit rejected ab, weil dir dessen Commits fehlen. Hol sie zuerst und push dann noch einmal:

git pull
git push

Öffnet git pull einen Editor für eine Commit-Nachricht, speichere sie unverändert und schließe den Editor. Meldet Git einen Konflikt, hat jemand dieselbe Datei geändert wie du. Dann gilt: nichts löschen, nichts überschreiben, nach Hilfe fragen. Solange du nur Dateien in deinem eigenen Ordner änderst, passiert das nicht.