Bisher haben Sie mit Git nur lokal auf Ihrem Computer gearbeitet. In diesem Kapitel lernen Sie, wie Sie Ihre Repositories mit einem Server (z.B. GitHub oder GitLab) synchronisieren können.
Was ist ein Remote Repository?¶
Ein Remote Repository (oft einfach “Remote” genannt) ist eine Kopie Ihres Git-Projekts auf einem Server im Internet. Die wichtigsten Vorteile:
Backup: Ihre Arbeit ist gesichert, falls Ihr Computer ausfällt
Zusammenarbeit: Mehrere Personen können am selben Projekt arbeiten
Teilen: Sie können Ihr Projekt öffentlich zugänglich machen
Von überall arbeiten: Zugriff von verschiedenen Computern
Hosting-Plattformen¶
Die bekanntesten Plattformen für Git-Repositories:
Größte Plattform, sehr verbreitet
Kostenlose öffentliche und private Repositories
Open-Source-Alternative zu GitHub
Kann auch selbst gehostet werden
Leichtgewichtige, selbst-hostbare Lösung
Open Source
Oft von Institutionen verwendet
In diesem Kurs verwenden wir GitHub als Beispiel, aber die Konzepte gelten für alle Plattformen.
Ein Repository klonen: git clone¶
Der häufigste Weg, mit einem Remote-Repository zu arbeiten, ist es zu klonen – das heißt, eine vollständige Kopie herunterzuladen.
Beispiel: Diesen Kurs klonen¶
Sie haben diesen Kurs wahrscheinlich bereits geklont, als Sie ihn eingerichtet haben:
git clone https://github.com/schnaitter/Selbstlernkurs_Python.gitWas passiert?
Git lädt das Repository herunter
Erstellt einen Ordner mit dem Repository-Namen
Richtet automatisch eine Verbindung zum Remote-Repository ein
Checkt den Standard-Branch (meist
main) aus
Die Remote-Verbindung anzeigen¶
Wenn Sie ein Repository geklont haben, ist automatisch eine Remote-Verbindung eingerichtet:
git remote -vAusgabe:
origin https://github.com/schnaitter/Selbstlernkurs_Python.git (fetch)
origin https://github.com/schnaitter/Selbstlernkurs_Python.git (push)Änderungen herunterladen: git pull¶
Wenn das Remote-Repository aktualisiert wurde (z.B. durch andere Personen oder von einem anderen Computer), laden Sie die Änderungen mit:
git pullWas passiert?
Git fragt das Remote-Repository: “Gibt es neue Commits?”
Lädt neue Commits herunter
Führt sie mit Ihrem lokalen Stand zusammen (merge)
Beispiel-Ausgabe:
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 2), reused 5 (delta 2)
Unpacking objects: 100% (5/5), done.
From https://github.com/schnaitter/Selbstlernkurs_Python
a1b2c3d..e4f5g6h main -> origin/main
Updating a1b2c3d..e4f5g6h
Fast-forward
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)Änderungen hochladen: git push¶
Wenn Sie lokal Commits erstellt haben und diese auf den Server hochladen möchten:
git pushVoraussetzungen:
Sie müssen Schreibrechte für das Repository haben
Ihr lokaler Branch muss mit einem Remote-Branch verknüpft sein
Beispiel-Ausgabe:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 280 bytes | 280.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/ihre-username/ihr-projekt.git
a1b2c3d..e4f5g6h main -> mainEin neues Remote-Repository erstellen¶
Szenario: Sie haben ein lokales Projekt und möchten es auf GitHub veröffentlichen.
Schritt 1: Repository auf GitHub erstellen¶
Gehen Sie zu https://github.com und loggen Sie sich ein
Klicken Sie auf “New repository” (grüner Button)
Geben Sie einen Namen ein (z.B. “mein-python-projekt”)
Wählen Sie öffentlich (public) oder privat (private)
Wichtig: Erstellen Sie KEIN README, keine .gitignore, keine Lizenz (das machen wir lokal)
Klicken Sie auf “Create repository”
GitHub zeigt Ihnen jetzt Anweisungen. Wir folgen den Anweisungen für ein “existing repository”:
Schritt 2: Lokales Repository mit Remote verbinden¶
In Ihrem lokalen Projektordner:
# Remote-Verbindung hinzufügen (URL von GitHub kopieren!)
git remote add origin https://github.com/ihr-username/mein-python-projekt.git
# Branch umbenennen (falls noch "master" statt "main")
git branch -M main
# Zum ersten Mal hochladen
git push -u origin mainSchritt 3: Weitere Commits hochladen¶
Ab jetzt können Sie normal arbeiten:
# Datei ändern
echo "print('Neue Funktion')" >> programm.py
# Committen
git add programm.py
git commit -m "Neue Funktion hinzugefügt"
# Hochladen
git pushDer komplette Workflow: lokal und remote¶
Authentifizierung: SSH vs. HTTPS¶
Wenn Sie auf ein Remote-Repository zugreifen, müssen Sie sich authentifizieren. Es gibt zwei Methoden:
HTTPS (einfacher für Anfänger)¶
git clone https://github.com/username/repo.gitVorteile:
Einfach einzurichten
Funktioniert überall (auch hinter Firewalls)
Nachteile:
Sie müssen bei jedem
pushIhren Benutzernamen und ein Token eingeben
Token erstellen (GitHub):
GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
“Generate new token” → Berechtigungen auswählen (mindestens
repo)Token kopieren (wird nur einmal angezeigt!)
Beim
git pushToken als Passwort eingeben
SSH (für Fortgeschrittene)¶
git clone git@github.com:username/repo.gitVorteile:
Keine wiederholte Authentifizierung nötig
Sicherer
Nachteile:
Einrichtung etwas komplexer (SSH-Keys erstellen)
Häufige Situationen¶
Szenario 1: Lokale und remote Änderungen¶
Sie haben lokal gearbeitet, aber jemand anderes hat auch Änderungen hochgeladen.
git pushFehlermeldung:
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/...'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.Lösung:
# Erst remote Änderungen herunterladen
git pull
# Dann hochladen
git pushSzenario 2: Ein geklontes Repository aktualisieren¶
Sie haben ein Repository vor Wochen geklont. Jetzt möchten Sie die neuesten Änderungen:
cd pfad/zum/repository
git pullSzenario 3: Remote-URL ändern¶
Sie haben Ihr Repository umbenannt oder die URL geändert:
# Aktuelle URL anzeigen
git remote -v
# URL ändern
git remote set-url origin https://github.com/neue-url/neues-repo.git
# Überprüfen
git remote -vZusammenarbeit: Ein einfaches Beispiel¶
Angenommen, Sie arbeiten mit einer Kollegin zusammen:
Sie (Computer A):
# Datei ändern
echo "# Neue Notiz" >> notizen.md
git add notizen.md
git commit -m "Notiz hinzugefügt"
git pushIhre Kollegin (Computer B):
# Änderungen herunterladen
git pull
# Jetzt hat sie Ihre Änderung!
cat notizen.mdIhre Kollegin macht auch Änderungen:
echo "# Weitere Notiz" >> notizen.md
git add notizen.md
git commit -m "Weitere Notiz ergänzt"
git pushSie holen die Änderungen:
git pullWas sind Merge-Konflikte?¶
Wenn zwei Personen dieselbe Zeile in derselben Datei ändern, entsteht ein Merge-Konflikt. Git kann nicht automatisch entscheiden, welche Änderung korrekt ist.
Zusammenfassung¶
Die wichtigsten Befehle für Remote-Repositories:
| Befehl | Beschreibung |
|---|---|
git clone <url> | Repository herunterladen |
git remote -v | Remote-Verbindungen anzeigen |
git pull | Änderungen vom Server herunterladen |
git push | Änderungen zum Server hochladen |
git remote add origin <url> | Remote-Verbindung hinzufügen |
Typischer Workflow¶
# Am Anfang: Repository klonen
git clone https://github.com/username/projekt.git
cd projekt
# Regelmäßig: Vor Arbeitsbeginn aktualisieren
git pull
# Arbeiten: Änderungen machen und committen
git add .
git commit -m "Änderungen beschrieben"
# Am Ende: Hochladen
git pushIm nächsten Kapitel lernen Sie Branches kennen – ein mächtiges Feature zum parallelen Arbeiten an verschiedenen Features.