Arbeiten mit Remote-Repositories
Einführung
Remotes ermöglichen Zusammenarbeit, Backup und Deployment. Dieses Tutorial deckt Hinzufügen, Inspektion, Synchronisation, Pruning und Verwaltung ab.
Schlüsselbegriffe
| Begriff | Bedeutung |
|---|---|
| Remote | Benannter Verweis auf gehostetes Repo (z.B. origin) |
| Tracking Branch | Lokaler Branch mit Upstream-Zuordnung (z.B. main ↔ origin/main) |
| Fetch | Lädt Objekte & Refs (kein Working-Tree-Update) |
| Pull | Fetch + Integration (Merge oder Rebase) |
| Push | Überträgt lokale Commits zu Remote |
Remotes auflisten
bash
git remote -vRemote hinzufügen
bash
git remote add origin https://github.com/example/app.git
git remote add upstream https://github.com/org/app.gitURL ändern
bash
git remote set-url origin git@github.com:example/app.gitRemote entfernen
bash
git remote remove upstreamAktualisieren / Fetchen
bash
git fetch
git fetch --all
git fetch origin mainRemote-Branches ansehen
bash
git branch -r
git branch -aTracking-Branch erstellen
bash
git checkout -b feature/ui origin/feature/ui
# oder
git switch -c feature/ui --track origin/feature/uiUpstream nachträglich setzen
bash
git branch --set-upstream-to=origin/main main
# oder beim ersten Push
git push -u origin mainPull-Strategie konfigurieren
bash
git config --global pull.rebase true
# oder nur im Repo
git config pull.rebase trueSicheres Aktualisieren
bash
git fetch origin
git rebase origin/main # oder merge je PolicyBranch pushen / löschen
bash
git push origin feature/auth
git push origin --delete feature/authLokalen Branch umbenennen (inkl. Remote)
bash
git branch -m old-name new-name
git push origin :old-name new-name
git push origin -u new-nameVeraltete Referenzen bereinigen
bash
git remote prune origin
git fetch --pruneRemote-Details anzeigen
bash
git remote show originMehrere Remotes (Fork-Workflow)
bash
git remote add upstream https://github.com/original/project.git
git fetch upstream
git rebase upstream/main
git push origin mainMirror / Backup
bash
git clone --mirror https://github.com/source/repo.git
cd repo.git
git push --mirror git@internal:backup/repo.gitAuthentifizierungstipps
- SSH bevorzugen
- HTTPS + 2FA → Personal Access Token
- Credentials cachen:
git config --global credential.helper cache
Häufige Probleme
| Issue | Ursache | Lösung |
|---|---|---|
| Push rejected (non-fast-forward) | Remote weiter | git pull --rebase + push |
| Auth fehlgeschlagen | Token/Key ungültig | Neu erzeugen |
| Detached HEAD Editing | Remote-Ref direkt ausgecheckt | Branch erstellen: git switch -c fix upstream/main |
| Stale Tracking | Branch remote gelöscht | git fetch --prune |
Best Practices
- Einheitliche Namen (
origin,upstream) - Prune automatisieren
- Kein Force-Push auf geteilte Branches
- Schutzregeln für
main - Tokens/Keys rotieren
Zusammenfassung
Gezieltes Fetchen, bewusste Pull-Strategie, regelmäßiges Pruning und gute Upstream-Hygiene ermöglichen effiziente Kollaboration.
Nächste Schritte
- Code Review Workflow (
pull-requests-and-code-review-workflow.md) - Konfliktstrategien (
git-conflict-resolution-strategies.md)
Key Commands
bash
git remote -v
git fetch --all --prune
git push origin <branch>
git remote show origin
git remote prune origin