Skip to content

Kapitel 8: Erweiterte Remote-Operationen

8.1 Remote-URL ändern (git remote set-url)

📖 Warum URL ändern?

Manchmal müssen Sie die URL Ihres Remote-Repositories ändern:

  • Von HTTPS zu SSH wechseln (Sicherheit & Komfort)
  • Repository wurde umbenannt (GitHub ermöglicht Umbenennung)
  • Repository wurde migriert (zu einem anderen Server)

🔹 1. Aktuelle Remote-URL anzeigen

bash
# Remote-URL anzeigen
git remote -v

# Detaillierte Informationen
git remote show origin

Ausgabe-Beispiel:

origin  https://github.com/benutzer/altes-projekt.git (fetch)
origin  https://github.com/benutzer/altes-projekt.git (push)

🔹 2. Remote-URL ändern

bash
# HTTPS zu SSH ändern
git remote set-url origin git@github.com:benutzer/neues-projekt.git

# Überprüfen
git remote -v

Ausgabe nach Änderung:

origin  git@github.com:benutzer/neues-projekt.git (fetch)
origin  git@github.com:benutzer/neues-projekt.git (push)

🔹 3. Fehlerbehebung bei URL-Änderung

Fehler: fatal: No such remote 'origin'

Ursache: Remote origin existiert nicht.

Lösung:

bash
# Remote hinzufügen (statt set-url)
git remote add origin https://github.com/benutzer/neues-projekt.git

8.2 Remote-Branches verwalten

📖 Was sind Remote-Branches?

Remote-Branches sind Referenzen auf den Stand des Repositories auf dem Server.

** Notation:** <remote>/<branch> (z.B. origin/main)


🔹 1. Remote-Branches anzeigen

bash
# Alle Remote-Branches anzeigen
git branch -r

# Alle Branches anzeigen (lokal + remote)
git branch -a

Ausgabe-Beispiel:

  origin/HEAD -> origin/main
  origin/develop
  origin/feature-login
  origin/main

🔹 2. Remote-Branch löschen

bash
# Remote-Branch löschen (via Push)
git push origin --delete feature-login

# Oder (ältere Syntax)
git push origin :feature-login

Wichtig: Dies löscht nur den Branch auf dem Server, nicht lokal!


🔹 3. Lokalen Branch löschen (nach Remote-Löschung)

Wenn ein Remote-Branch gelöscht wurde, bleibt der lokale Tracking-Branch erhalten.

bash
# Reference auf Remote-Branches bereinigen
git fetch --prune

# Oder kurz
git fetch -p

Lokalen Branch löschen:

bash
git branch -d feature-login

🔹 4. Remote-Branch tracken (verfolgen)

bash
# Remote-Branch lokal tracken
git checkout --track origin/feature-login

# Kurzform (wenn Branch-Name identisch ist)
git checkout feature-login

Eigener Branch, der einen Remote-Branch trackt:

bash
# Lokalen Branch erstellen, der origin/main trackt
git checkout -b mein-branch origin/main

8.3 Code forcet push (git push -f) (⚠️ Vorsicht!)

📖 Was ist Force Push?

Normalerweise lehnt Git einen Push ab, wenn Sie Commits "überschreiben" (z.B. nach git reset).

Force Push (-f) erzwingt das Überschreiben der Historie auf dem Remote.


🔹 1. Wann Force Push verwenden?

SzenarioEmpfehlung
Privater Branch (noch nicht gemergt)✅ Erlaubt (mit Vorsicht)
Team-Branch (feature-Branch anderer)⚠️ Nur nach Absprache
Main/Develop-BranchNiemals!
Bereits gemergter BranchNiemals!

🔹 2. Force Push durchführen

bash
# Force Push (⚠️ Gefährlich!)
git push -f origin feature-login

# Noch sicherer: --force-with-lease (verhindert Überschreiben fremder Arbeit)
git push --force-with-lease origin feature-login

Erklärung --force-with-lease:

  • Prüft, ob der Remote-Branch seit Ihrem letzten Fetch geändert wurde
  • Verhindert versehentliches Überschreiben

🔹 3. Force Push rückgängig machen

Wenn Sie einen Force Push bereuen:

bash
# 1. Reflog auf dem Remote-Server anzeigen (nur möglich, wenn Sie Zugriff auf den Server haben)
# 2. Oder: Fragen Sie Teammitglieder, ob sie eine Kopie haben

# Falls ja: Alten Stand wiederherstellen
git push -f origin <alte-commit-hash>:main

Besser: Force Push vermeiden!


8.4 Remote-Repository sichern & wiederherstellen

🔹 1. Backup durch Klonen

bash
# Vollständiges Backup erstellen (alle Branches & Tags)
git clone --mirror https://github.com/benutzer/projekt.git projekt-backup.git

Erklärung:

  • --mirror: Klont alles (Branches, Tags, Remote-Referenzen)
  • Erstellt ein bare repository (kein Working Directory)

🔹 2. Backup wiederherstellen

bash
# Aus dem Backup ein neues Remote-Repository erstellen
cd projekt-backup.git
git push --mirror https://github.com/benutzer/neues-projekt.git

🔹 3. Bundle erstellen (für Offline-Transfer)

bash
# Bundle-Datei erstellen (enthält alles)
git bundle create projekt.bundle --all

# Bundle auf einem anderen Computer klonen
git clone projekt.bundle neues-projekt

8.5 Cross-Repository-Kollaboration (Forking-Workflow)

📖 Was ist Forking?

Forking ist eine Methode, um an fremden Open-Source-Projekten mitzuarbeiten.

Ablauf:

1. Fork erstellen (Kopie des fremden Repositories in Ihrem Account)

2. Fork klonen (auf Ihren Computer)

3. Änderungen vornehmen & committen

4. Push zu Ihrem Fork

5. Pull Request (PR) an den Original-Autor senden

🔹 1. Fork erstellen (auf GitHub/GitLab)

  1. Besuchen Sie das fremde Repository (z.B. https://github.com/fremder-author/projekt)
  2. Klicken Sie auf "Fork" (oben rechts)
  3. Wählen Sie Ihren Account aus
  4. GitHub erstellt eine Kopie unter https://github.com/ihr-username/projekt

🔹 2. Fork klonen & konfigurieren

bash
# Ihren Fork klonen
git clone https://github.com/ihr-username/projekt.git
cd projekt

# Original-Repository als "upstream" hinzufügen
git remote add upstream https://github.com/fremder-author/projekt.git

# Überprüfen
git remote -v

Ausgabe:

origin     https://github.com/ihr-username/projekt.git (fetch)
origin     https://github.com/ihr-username/projekt.git (push)
upstream   https://github.com/fremder-author/projekt.git (fetch)
upstream   https://github.com/fremder-author/projekt.git (push)

🔹 3. Aktuell halten (Syncing a Fork)

bash
# 1. Neueste Änderungen vom Original-Repository holen
git fetch upstream

# 2. In Ihren lokalen main-Branch mergen
git checkout main
git merge upstream/main

# 3. Änderungen in Ihren Fork pushen
git push origin main

🔹 4. Pull Request (PR) erstellen

bash
# 1. Neuen Branch erstellen
git checkout -b fix-bug-123

# 2. Änderungen vornehmen & committen
# ... Ihre Änderungen ...
git add .
git commit -m "Fix: Bug #123 behoben"

# 3. Branch in Ihren Fork pushen
git push origin fix-bug-123

# 4. Auf GitHub: "Compare & pull request" klicken
#    Base: fremder-author/projekt:main
#    Compare: ihr-username/projekt:fix-bug-123

🔹 5. Pull Request aktualisieren

Wenn der Autor Änderungen an Ihrem PR verlangt:

bash
# Auf Ihrem Branch bleiben (fix-bug-123)
# Änderungen vornehmen
# ... Ihre Änderungen ...

# Committen & pushen (automatisch im PR aktualisiert)
git add .
git commit -m "Update: Änderungen gemäß Review"
git push origin fix-bug-123

📝 Zusammenfassung

In diesem Kapitel haben Sie gelernt:

  • Remote-URL ändern (git remote set-url)
  • Remote-Branches verwalten (anzeigen, löschen, tracken)
  • Force Push (git push -f) und dessen Gefahren
  • Remote-Repository sichern (Clone --mirror, Bundle)
  • Forking-Workflow (Open-Source-Beiträge)

Nächstes Kapitel: Wir werden Praxisprojekte behandeln (Einzelentwicklung & Teamarbeit).



Copyright © 2024 Git-Tutorial für Anfänger

Frei für alle Anfänger