Zum Inhalt springen
Git & GitHub Anfänger 25 min

Remote Repositories

Lerne, wie du mit Remote Repositories arbeitest - von der Verbindung bis zur Synchronisation mit GitHub.

Aktualisiert:

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
StatusBedeutung
[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

  1. Erstelle ein lokales Repository und verbinde es mit einem GitHub-Repository
  2. Pushe deinen Code und pruefe ihn auf GitHub
  3. Klone das Repository in einen anderen Ordner und mache dort Aenderungen
  4. Pushe und pulle zwischen den beiden lokalen Kopien
  5. 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
  • origin ist der Standard-Name fuer das erste Remote
  • git remote add fuegt ein neues Remote hinzu
  • git fetch holt Informationen ohne lokale Aenderungen
  • git pull holt und merged in einem Schritt
  • git push -u setzt die Tracking-Beziehung
  • git branch -vv zeigt 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.

Zurück zum Git & GitHub Kurs