Remote Repositories
Lerne, wie du mit Remote Repositories arbeitest - von der Verbindung bis zur Synchronisation mit GitHub.
Ein Remote Repository ist eine Version deines Projekts, die auf einem Server liegt - zum Beispiel auf GitHub. In diesem Kapitel lernst du, wie du Remotes hinzufuegst, verwaltest und deinen lokalen Code mit der Cloud synchronisierst.
Was sind Remote Repositories?
Bisher hast du nur lokal gearbeitet. Ein Remote ist eine Verbindung zu einem Repository auf einem Server:
Dein Computer GitHub
┌─────────────┐ ┌─────────────┐
│ Lokales │ ← push/pull → │ Remote │
│ Repository │ │ Repository │
└─────────────┘ └─────────────┘
Du kannst mehrere Remotes haben - zum Beispiel eines auf GitHub und eines auf GitLab.
Remotes anzeigen
Einfache Ansicht
git remote
origin
origin ist der Standard-Name fuer das erste Remote (meistens GitHub).
Mit URLs
git remote -v
origin https://github.com/dein-name/meine-webseite.git (fetch)
origin https://github.com/dein-name/meine-webseite.git (push)
Jedes Remote hat zwei URLs:
- fetch: Zum Herunterladen von Aenderungen
- push: Zum Hochladen von Aenderungen
(Meistens sind beide gleich.)
Ein Remote hinzufuegen
Beim Klonen
Wenn du ein Repository klonst, wird origin automatisch gesetzt:
git clone https://github.com/dein-name/meine-webseite.git
cd meine-webseite
git remote -v
origin https://github.com/dein-name/meine-webseite.git (fetch)
origin https://github.com/dein-name/meine-webseite.git (push)
Manuell hinzufuegen
Bei einem bestehenden lokalen Projekt:
# Remote hinzufuegen
git remote add origin https://github.com/dein-name/meine-webseite.git
# Pruefen
git remote -v
Mehrere Remotes
Du kannst mehrere Remotes haben:
# GitHub als origin
git remote add origin https://github.com/dein-name/projekt.git
# Zweites Remote (z.B. fuer Deployment)
git remote add production https://git.mein-server.de/projekt.git
# Pruefen
git remote -v
origin https://github.com/dein-name/projekt.git (fetch)
origin https://github.com/dein-name/projekt.git (push)
production https://git.mein-server.de/projekt.git (fetch)
production https://git.mein-server.de/projekt.git (push)
Remotes verwalten
Remote umbenennen
git remote rename origin github
Remote-URL aendern
# Von HTTPS zu SSH wechseln
git remote set-url origin git@github.com:dein-name/meine-webseite.git
# Pruefen
git remote -v
Remote entfernen
git remote remove production
Detaillierte Remote-Infos
git remote show origin
* remote origin
Fetch URL: https://github.com/dein-name/meine-webseite.git
Push URL: https://github.com/dein-name/meine-webseite.git
HEAD branch: main
Remote branches:
main tracked
feature/navigation tracked
Local branches configured for 'git pull':
main merges with remote main
Local refs configured for 'git push':
main pushes to main (up to date)
Remote-Branches
Remote-Branches anzeigen
# Alle Branches (lokal + remote)
git branch -a
* main
feature/navigation
remotes/origin/main
remotes/origin/feature/navigation
remotes/origin/feature/footer
Branches mit remotes/origin/ sind die Branches auf dem Server.
Remote-Branches aktualisieren
# Informationen vom Server holen (ohne lokale Dateien zu aendern)
git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
From https://github.com/dein-name/meine-webseite
a3f4b2c..d4e5f6a main -> origin/main
* [new branch] feature/footer -> origin/feature/footer
git fetch holt die neuesten Infos vom Server, aendert aber nichts an deinem lokalen Code!
Remote-Branch lokal auschecken
# Neuen lokalen Branch erstellen, der den Remote-Branch trackt
git switch feature/footer
Branch 'feature/footer' set up to track remote branch 'feature/footer' from 'origin'.
Switched to a new branch 'feature/footer'
Tracking-Beziehungen
Was ist Tracking?
Wenn ein lokaler Branch einen Remote-Branch “trackt”, weiss Git, womit er verglichen werden soll:
# Tracking einrichten beim ersten Push
git push -u origin main
Das -u (oder --set-upstream) verknuepft deinen lokalen main mit origin/main.
Tracking-Status pruefen
git branch -vv
* main d4e5f6a [origin/main] feat: Kontaktformular
feature/navigation a3f4b2c [origin/feature/navigation: ahead 2] style: Navigation
| Status | Bedeutung |
|---|---|
[origin/main] | Auf dem gleichen Stand wie Remote |
[origin/main: ahead 2] | 2 Commits voraus (nicht gepusht) |
[origin/main: behind 3] | 3 Commits hinterher (nicht gepullt) |
[origin/main: ahead 1, behind 2] | Divergiert |
Fetch vs. Pull
git fetch
Holt die neuesten Informationen vom Server, ohne deine lokalen Dateien zu aendern:
git fetch origin
Danach kannst du dir anschauen, was sich geaendert hat:
# Was ist auf dem Server neu?
git log main..origin/main --oneline
git pull
Holt die Informationen UND merged sie in deinen lokalen Branch:
git pull origin main
git pull ist im Grunde git fetch + git merge in einem Schritt.
Fetch (holen): Pull (holen + mergen):
Server ──→ origin/main Server ──→ origin/main ──→ main
(nur Remote-Zeiger) (direkt gemergt)
Upstream-Branch setzen
Beim ersten Push
git push -u origin main
Nachtraeglich
git branch --set-upstream-to=origin/main main
Danach reichen Kurzformen
# Statt:
git push origin main
git pull origin main
# Einfach:
git push
git pull
Praktisches Beispiel: Workflow mit Remote
# 1. Morgens: Neueste Aenderungen holen
git switch main
git pull
# 2. Feature-Branch erstellen
git switch -c feature/kontakt-seite
# 3. Arbeiten und committen
touch kontakt.html
git add kontakt.html
git commit -m "feat: Kontakt-Seite erstellt"
# 4. Feature-Branch auf GitHub pushen
git push -u origin feature/kontakt-seite
# 5. (Auf GitHub: Pull Request erstellen)
# 6. Nach dem Merge: Aufraemen
git switch main
git pull
git branch -d feature/kontakt-seite
git push origin --delete feature/kontakt-seite
Haeufige Fehler und Loesungen
”fatal: No configured push destination”
Du hast noch kein Remote konfiguriert:
git remote add origin https://github.com/dein-name/projekt.git
git push -u origin main
“rejected - non-fast-forward”
Jemand hat gepusht, bevor du es konntest:
git pull
# Eventuelle Konflikte loesen
git push
“remote origin already exists”
Das Remote existiert bereits:
# URL aendern statt neu erstellen
git remote set-url origin https://github.com/dein-name/neues-projekt.git
Uebungen
- Erstelle ein lokales Repository und verbinde es mit einem GitHub-Repository
- Pushe deinen Code und pruefe ihn auf GitHub
- Klone das Repository in einen anderen Ordner und mache dort Aenderungen
- Pushe und pulle zwischen den beiden lokalen Kopien
- Nutze
git remote show origin, um die Remote-Details anzuschauen
Was kommt als Naechstes?
Im naechsten Kapitel lernst du git push und git pull im Detail kennen - die Befehle, mit denen du deinen Code zwischen deinem Computer und GitHub synchronisierst.
Zusammenfassung
- Ein Remote ist eine Verbindung zu einem Repository auf einem Server
originist der Standard-Name fuer das erste Remotegit remote addfuegt ein neues Remote hinzugit fetchholt Informationen ohne lokale Aenderungengit pullholt und merged in einem Schrittgit push -usetzt die Tracking-Beziehunggit branch -vvzeigt den Tracking-Status aller Branches
Pro-Tipp: Nutze git fetch statt git pull, wenn du erst schauen moechtest, was sich auf dem Server geaendert hat, bevor du es in deinen Code uebernimmst. So behaltst du die volle Kontrolle und vermeidest Ueberraschungen.