- 1 Section
- 10 Lessons
- unbegrenzt
- Versionsverwaltung mit Git10
Remotes: clone, push, pull, fetch
In L3 hast du lokal mit Git gearbeitet – commiten, status, log. Aber: lokal alleine ist Git ein Tagebuch. Erst durch Remotes wird es zur Team-Plattform. Diese Lektion zeigt die vier Sync-Befehle: git clone, git push, git pull, git fetch. Plus Authentifizierung (HTTPS vs. SSH) und typische Stolperfallen.
Ein Remote ist eine Kopie deines Repos auf einem Server – GitHub, GitLab, Bitbucket, eigener Server. Du kannst mit deinem lokalen Repo arbeiten und Stände synchronisieren, wann du willst. Das ist der Kern verteilter Versionsverwaltung.
1) Das Big Picture – wie Sync funktioniert
Wenn du im Team mit Git arbeitest, gibt es vier Ebenen: deine Arbeitsdateien (Working Directory), die Staging Area, dein lokales Repo, und das Remote-Repo auf dem Server. Sync-Befehle bewegen Daten zwischen diesen Ebenen:
git clone = neues Repo erstellen aus einem Remote. git push = lokale Commits hochschicken. git fetch = Remote-Änderungen herunterladen, aber nicht ins Working Directory übernehmen. git pull = fetch + merge in einem Schritt.2) git clone – ein bestehendes Projekt holen
Wenn du in einem neuen Job startest oder an einem Open-Source-Projekt mitwirken willst, ist der erste Befehl meistens git clone. Er macht eine komplette Kopie des Remote-Repos auf deinen Rechner – mit Historie, Branches, allem.
.git/, setzt den Remote automatisch auf origin und checkt den Default-Branch (meist main) aus.git init brauchst du keinen ersten Commit – du erbst die komplette Historie. Optionen: --depth 1 für einen flachen Clone (nur letzter Stand, keine alte Historie), --branch <name> für einen bestimmten Branch.3) git push – deine Commits hochladen
Du hast lokal commitet. Aber: noch hat niemand außer dir etwas davon. Erst git push bringt deine Commits zum Remote.
git push ohne Argumente sendet den aktuellen Branch an den dazugehörigen Remote (üblicherweise origin). Beim ersten Push eines neuen Branches: git push -u origin <branch> (das -u setzt das Upstream-Tracking).git push --force nutzen (zerstört fremde Arbeit), sondern einen Revert-Commit erstellen. Vgl. L6 für Force-Push-Diskussionen.4) git fetch vs. git pull – der wichtige Unterschied
Die Unterscheidung wird gerne in Klausuren abgefragt. Beide holen Daten vom Remote – aber unterschiedlich:
origin/main-Referenzen.git log origin/main zeigt was neu ist.git pull --rebase = Variante mit Rebase statt Merge.git pull, damit du den neuesten Stand hast. Wenn du dir nicht sicher bist, ob es Konflikte geben könnte – lieber git fetch + git status + manueller Merge. git pull --rebase erzeugt sauberere Historien, weil keine Merge-Commits entstehen – Details in L6.5) Befehls-Cheatsheet
origin.upstream für den Original-Repo eines Forks.origin.6) HTTPS vs. SSH – wie du dich authentifizierst
Beim Klonen siehst du zwei URL-Varianten. Beide funktionieren, mit Unterschieden:
https://github.com/user/repo.gitAuth: Personal Access Token (PAT) oder OAuth. Wird beim Push abgefragt.
Vorteile: funktioniert hinter Firewalls, kein Schlüssel-Setup nötig.
Nachteile: bei jedem Push Auth – außer mit Credential-Manager.
git@github.com:user/repo.gitAuth: SSH-Schlüsselpaar (Public Key auf GitHub, Private Key auf Rechner).
Vorteile: kein wiederholtes Passwort-Tippen, sicherer.
Nachteile: einmaliges Setup (
ssh-keygen + GitHub-Settings).git remote set-url origin git@github.com:user/repo.git.7) Tracking-Branches und Upstream
Ein Konzept, das oft Verwirrung stiftet: Upstream-Tracking. Es bedeutet: dein lokaler Branch „weiß", zu welchem Remote-Branch er gehört. So funktioniert git pull ohne Argumente.
git branch -vvzeigt alle Branches mit ihren Upstream-Beziehungen.- Beim Clone wird automatisch
main → origin/maingetrackt. - Für neue Branches:
git push -u origin feature/xsetzt das Tracking beim ersten Push. - Manuell ändern:
git branch --set-upstream-to=origin/main.
Wenn du eine Fehlermeldung „no upstream branch" siehst, fehlt das Tracking. Lösung: -u beim Push.
8) Häufige Probleme und Lösungen
git pull oder git pull --rebase, dann erneut pushen.ssh -T git@github.com testen.git push -u origin <branchname> – setzt Upstream-Tracking beim ersten Push..gitignore ergänzen, ggf. Git LFS.git switch main oder neuen Branch erstellen.9) Branches auf dem Remote
Wenn jemand im Team einen neuen Branch erstellt und pusht, siehst du ihn nicht automatisch. Du musst git fetch machen, dann taucht origin/<branch> auf. Mit git switch <branch> kannst du ihn dann auschecken – Git erstellt automatisch einen lokalen Branch mit Tracking zum Remote.
Befehle:
git branch -r– listet alle Remote-Branches.git branch -a– listet lokale + Remote-Branches.git push origin --delete feature/alt– löscht einen Branch auf dem Remote.git fetch --prune– entfernt lokale Referenzen zu gelöschten Remote-Branches.
10) Fork-Workflow für Open Source
Bei Open-Source-Beiträgen läufst du oft so:
- Fork auf GitHub: macht eine eigene Kopie des Original-Repos in deinem Account.
- Clone deines Forks:
git clone https://github.com/du/projekt.git. - Upstream hinzufügen:
git remote add upstream https://github.com/original/projekt.git. - Branch erstellen:
git switch -c feature/cool-fix. - Commiten + Pushen auf deinen Fork.
- Pull Request auf GitHub erstellen – vom Branch deines Forks gegen
upstream/main. - Regelmäßig
git fetch upstream, um synchron zu bleiben.
Mehr zu Pull Requests in L9.
Zusammenfassung
Remote = Server-Kopie des Repos (GitHub/GitLab), Standardname origin. git clone <url>: komplette Repo-Kopie holen. git push: lokale Commits hochladen. git fetch: Remote-Änderungen holen ohne Merge. git pull: fetch + merge in einem. Authentifizierung: HTTPS (Token) oder SSH (Schlüssel). Upstream-Tracking: git push -u origin <branch> beim ersten Push. Nächste Lektion: Branching.
