# 🌐 Modul 05 – Remote & Pull Requests Bisher hast du nur lokal gearbeitet. In diesem Modul verbindest du dein Repo mit einem Server und lernst, wie Teams zusammenarbeiten. --- ## Lokales vs. Remote-Repository Ein **lokales Repository** liegt auf deinem Rechner. Ein **Remote-Repository** liegt auf einem Server (z. B. GitHub oder GitLab) und ist für alle Teammitglieder erreichbar. ```mermaid flowchart LR LOCAL[Lokales Repo\n💻 dein Rechner] -->|git push| REMOTE[origin\n☁️ GitHub / GitLab] REMOTE -->|git pull| LOCAL REMOTE -->|git fetch| LOCAL COLLEAGUE[Kollegen-Repo\n💻 anderer Rechner] -->|git push| REMOTE REMOTE -->|git pull| COLLEAGUE ``` --- ## Remote-Verbindung einrichten ### Schritt 1: Remote-Repo anlegen Erstelle auf [GitHub](https://github.com) oder [GitLab](https://gitlab.com) ein **leeres** Repository (ohne README, ohne .gitignore). ### Schritt 2: Remote-URL verknüpfen ```bash git remote add origin https://github.com/deinname/mein-repo.git ``` ### Schritt 3: Remote-Verbindung prüfen ```bash git remote -v ``` ```text origin https://github.com/deinname/mein-repo.git (fetch) origin https://github.com/deinname/mein-repo.git (push) ``` --- ## Push – Commits hochladen ```bash git push -u origin main ``` ```text Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (5/5), 432 bytes | 432.00 KiB/s, done. Total 5 (delta 0), reused 0 (delta 0), pack-reused 0 To https://github.com/deinname/mein-repo.git * [new branch] main -> main Branch 'main' set up to track remote branch 'main' from 'origin'. ``` Das `-u` speichert die Verbindung. Ab jetzt reicht `git push`. --- ## Pull & Fetch – Änderungen herunterladen ```bash git pull ``` Lädt neue Commits vom Remote und integriert sie direkt in deinen aktuellen Branch (= `git fetch` + `git merge`). ```bash git fetch ``` Lädt neue Commits, integriert sie aber **noch nicht**. Du kannst erst prüfen, was sich geändert hat: ```bash git fetch git log HEAD..origin/main --oneline git merge origin/main ``` | Befehl | Was passiert | |--------|-------------| | `git fetch` | Holt neue Commits, verändert deinen Branch nicht | | `git pull` | Holt + merged (= fetch + merge) | --- ## Der Pull-Request-Workflow Ein **Pull Request (PR)** ist keine Git-Funktion, sondern eine Funktion von GitHub/GitLab. Er ermöglicht Code-Review, bevor Änderungen in `main` landen. ### Typischer Ablauf: 1. Du erstellst einen Feature-Branch lokal 2. Du machst Commits auf dem Branch 3. Du pushst den Branch auf das Remote: ```bash git push -u origin feature/mein-feature ``` 4. Auf GitHub/GitLab klickst du auf **"New Pull Request"** (GitHub) oder **"New Merge Request"** (GitLab) 5. Du wählst `main` als Zielbranch und deinen Feature-Branch als Quellbranch 6. Du gibst Titel und Beschreibung ein 7. Kollegen reviewen den Code und hinterlassen Kommentare 8. Du bearbeitest Feedback und machst weitere Commits (erscheinen automatisch im PR) 9. Nach Freigabe klickt jemand auf **"Merge"** --- ## Mini-Aufgabe > **Voraussetzung:** Du hast einen Account auf GitHub oder GitLab. 1. Erstelle ein leeres Remote-Repo (kein README!) 2. Verbinde dein lokales Repo aus Modul 02 mit dem Remote: ```bash git remote add origin git push -u origin main ``` 3. Öffne das Remote-Repo im Browser – deine Dateien sind da! 4. Erstelle einen Branch `feature/test`, mache einen Commit, push ihn und erstelle einen Pull Request --- ## ✅ Erfolgskriterien - [ ] `git remote -v` zeigt deine Remote-URL - [ ] `git push` hat alle Commits hochgeladen (Status 200 / kein Fehler) - [ ] Du kannst deine Dateien im Browser auf GitHub/GitLab sehen - [ ] Du hast einen Pull Request erstellt --- **Weiter geht's mit:** [06 – Quick Reference](../06-quick-reference/cheatsheet.md)