Appearance
Kapitel 7: Team Collaboration Workflow
7.1 Team-Collaboration-Grundablauf
📖 Typischer Team-Workflow
1. Remote-Repository klonen (git clone)
↓
2. Neuen Branch erstellen (git checkout -b feature/...)
↓
3. Änderungen vornehmen & committen (git add + git commit)
↓
4. Branch pushen (git push origin feature/...)
↓
5. Pull Request (PR) erstellen (auf GitHub/GitLab)
↓
6. Code-Review durch Teammitglieder
↓
7. Merge in Hauptbranch (nach Genehmigung)
↓
8. Branch löschen (nach Merge)🎯 Grundregeln für Teamarbeit
| Regel | Erklärung |
|---|---|
| Niemals direkt auf main committen | Immer über Feature-Branches arbeiten |
| Kleine, logische Commits | Ein Commit = eine logische Änderung |
| Aussagekräftige Commit-Nachrichten | Fix: Bug behoben statt fix |
| Häufig pullen | git pull origin main regelmäßig ausführen |
| Pull Requests verwenden | Code-Review ist unerlässlich |
7.2 Remote-Repository klonen (git clone detailliert)
🔹 git clone Optionen
bash
# Standard (HTTPS)
git clone https://github.com/benutzer/projekt.git
# Mit SSH
git clone git@github.com:benutzer/projekt.git
# In einen bestimmten Ordner klonen
git clone https://github.com/benutzer/projekt.git mein-ordner
# Nur den letzten Commit klonen (spart Zeit/Platz)
git clone --depth 1 https://github.com/benutzer/projekt.git
# Alle Branches klonen
git clone --no-single-branch https://github.com/benutzer/projekt.git🔹 Nach dem Klonen
bash
# In das Projektverzeichnis wechseln
cd projekt
# Alle Branches anzeigen (lokal & remote)
git branch -a
# Remote-Branches verfolgen (tracking)
git checkout -b feature-login origin/feature-login7.3 Team-Branch-Strategie
📋 Empfohlene Branch-Struktur
main (Produktion)
├── develop (Entwicklungs-Branch)
│ ├── feature/login (Feature-Branches)
│ ├── feature/payment
│ └── feature/profile
├── release/v1.0 (Release-Vorbereitung)
└── hotfix/bug-123 (Schnelle Bugfixes für Produktion)🔹 Branch-Typen
| Branch-Typ | Erstellt von | Wird gemergt in | Lebensdauer |
|---|---|---|---|
| main | – | – | Permanent |
| develop | main | main (via release) | Permanent |
| feature/* | develop | develop | Kurzlebig |
| release/* | develop | main + develop | Kurzlebig |
| hotfix/* | main | main + develop | Kurzlebig |
🔹 Feature-Branch-Workflow
Schritt 1: Von develop abzweigen
bash
git checkout develop
git pull origin develop
git checkout -b feature/loginSchritt 2: Entwickeln & committen
bash
# Änderungen vornehmen
echo "Login code" > login.js
git add login.js
git commit -m "Feature: Login-Funktion hinzugefügt"Schritt 3: Branch pushen
bash
git push -u origin feature/loginSchritt 4: Pull Request erstellen
- Auf GitHub/GitLab: "Compare & pull request" klicken
- Ziel-Branch:
develop - Review durch Teammitglieder abwarten
Schritt 5: Nach Merge – Branch löschen
bash
git checkout develop
git pull origin develop
git branch -d feature/login7.4 Team-Collaboration Schritt-für-Schritt
📝 Szenario: Zwei Entwickler arbeiten am selben Projekt
Entwickler A: Feature entwickeln
bash
# 1. Repository klonen
git clone https://github.com/team/projekt.git
cd projekt
# 2. Neuen Branch erstellen
git checkout -b feature/header
# 3. Änderungen vornehmen
echo "<header>Meine Website</header>" > header.html
git add header.html
git commit -m "Feature: Header hinzugefügt"
# 4. Branch pushen
git push -u origin feature/header
# 5. Pull Request auf GitHub erstellenEntwickler B: Anderes Feature entwickeln (parallel)
bash
# 1. Repository klonen
git clone https://github.com/team/projekt.git
cd projekt
# 2. Neuen Branch erstellen
git checkout -b feature/footer
# 3. Änderungen vornehmen
echo "<footer>Copyright</footer>" > footer.html
git add footer.html
git commit -m "Feature: Footer hinzugefügt"
# 4. Branch pushen
git push -u origin feature/footer
# 5. Pull Request auf GitHub erstellenTeamleiter: Code-Review & Merge
- Pull Requests auf GitHub überprüfen
- Code-Review durchführen (Kommentare, Änderungsvorschläge)
- Nach Genehmigung: "Merge pull request" klicken
feature/headerwird indevelopgemergt
Entwickler A & B: Nach dem Merge aktualisieren
bash
# Auf develop wechseln
git checkout develop
# Neueste Änderungen pullen
git pull origin develop
# Alten Feature-Branch löschen
git branch -d feature/header # (bzw. feature/footer)7.5 Häufige Team-Probleme und Lösungen
❌ Problem 1: Merge-Konflikte bei git pull
Szenario: Sie versuchen zu pullen, aber es gibt Konflikte.
Lösung:
bash
# 1. Konfliktdateien bearbeiten (siehe Kapitel 5.4)
# 2. Konfliktmarkierungen entfernen
# 3. Datei zur Staging Area hinzufügen
git add konflikt-datei.html
# 4. Merge abschließen
git commit -m "Merge: Konflikt gelöst"
# 5. Pushen
git push origin develop❌ Problem 2: Push fehlgeschlagen ("non-fast-forward")
Fehlermeldung:
! [rejected] develop -> develop (non-fast-forward)
error: failed to push some refs to '...'Ursache: Jemand anderes hat bereits gepusht.
Lösung:
bash
# 1. Neueste Änderungen pullen (fetch + merge)
git pull origin develop
# 2. Bei Konflikten: Lösen (siehe oben)
# 3. Erneut pushen
git push origin develop❌ Problem 3: "Ich habe aus Versehen auf main committet!"
Lösung (falls noch nicht gepusht):
bash
# 1. Commits in einen neuen Branch verschieben
git branch feature/mein-feature
git reset --hard origin/main
# 2. Auf den neuen Branch wechseln
git checkout feature/mein-feature
# 3. Pushen
git push -u origin feature/mein-feature❌ Problem 4: "Ich habe sensible Daten (Passwörter, Keys) gepusht!"
⚠️ Gefahr: Sensibles Daten sind in der Git-Historie sichtbar!
Lösung (Daten entfernen):
bash
# 1. BFG Repo-Cleaner oder git-filter-repo verwenden
# (Tool zum Bereinigen der Git-Historie)
# 2. Nach Bereinigung: Force Push (⚠️ Vorsicht!)
git push --force origin main
# 3. Alle Teammitglieder müssen ihre lokalen Repositories neu klonen!Besser: Zukünftig verhindern
- ✅
.gitignorefür.env,*.pem, etc. verwenden - ✅ Nie sensible Daten committen!
7.6 Team-Tools (GitHub/GitLab Kollaborationsfunktionen)
🔹 GitHub
| Funktion | Erklärung |
|---|---|
| Pull Requests (PR) | Code-Review, Diskussionen, automatische Tests |
| Issues | Fehlerberichte, Feature-Anfragen verwalten |
| Projects | Kanban-Board für Projektmanagement |
| Wiki | Dokumentation des Projekts |
| Actions | CI/CD-Pipelines (Automatisierung) |
🔹 GitLab
| Funktion | Erklärung |
|---|---|
| Merge Requests (MR) | Äquivalent zu GitHub PR |
| Issues | Fehlerberichte, Feature-Anfragen |
| Epics | Übergeordnete Themen (mehrere Issues zusammenfassen) |
| Milestones | Meilensteine (Zieldaten für Issues) |
| CI/CD | Integrierte Pipelines (.gitlab-ci.yml) |
🔹 Best Practices für Team-Tools
- Issues verwenden: Jedes Feature/Bug sollte ein Issue haben
- Pull Requests verknüpfen:
Closes #123in der PR-Beschreibung - Templates verwenden: PR-Template für einheitliches Format
- Reviews erzwingen: "Require pull request reviews before merging" aktivieren
- CI/CD integrieren: Automatische Tests bei jedem PR
📝 Zusammenfassung
In diesem Kapitel haben Sie gelernt:
- ✅ Team-Workflow-Grundablauf (klassischer Ablauf)
- ✅
git clonedetailliert (Optionen, nach dem Klonen) - ✅ Team-Branch-Strategie (main/develop/feature/release/hotfix)
- ✅ Team-Collaboration Schritt-für-Schritt (Szenario mit 2 Entwicklern)
- ✅ Häufige Team-Probleme lösen (Konflikte, Push-Fehler, etc.)
- ✅ Team-Tools nutzen (GitHub/GitLab Funktionen)
Nächstes Kapitel: Wir werden erweiterte Remote-Operationen behandeln (git remote erweitert, Remote-Branches verwalten, Forking-Workflow).
🔗 Weiterführende Links
Copyright © 2024 Git-Tutorial für Anfänger
