Skip to content

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

RegelErklärung
Niemals direkt auf main committenImmer über Feature-Branches arbeiten
Kleine, logische CommitsEin Commit = eine logische Änderung
Aussagekräftige Commit-NachrichtenFix: Bug behoben statt fix
Häufig pullengit pull origin main regelmäßig ausführen
Pull Requests verwendenCode-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-login

7.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-TypErstellt vonWird gemergt inLebensdauer
mainPermanent
developmainmain (via release)Permanent
feature/*developdevelopKurzlebig
release/*developmain + developKurzlebig
hotfix/*mainmain + developKurzlebig

🔹 Feature-Branch-Workflow

Schritt 1: Von develop abzweigen

bash
git checkout develop
git pull origin develop
git checkout -b feature/login

Schritt 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/login

Schritt 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/login

7.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 erstellen

Entwickler 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 erstellen

Teamleiter: Code-Review & Merge

  1. Pull Requests auf GitHub überprüfen
  2. Code-Review durchführen (Kommentare, Änderungsvorschläge)
  3. Nach Genehmigung: "Merge pull request" klicken
  4. feature/header wird in develop gemergt

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

  • .gitignore für .env, *.pem, etc. verwenden
  • ✅ Nie sensible Daten committen!

7.6 Team-Tools (GitHub/GitLab Kollaborationsfunktionen)

🔹 GitHub

FunktionErklärung
Pull Requests (PR)Code-Review, Diskussionen, automatische Tests
IssuesFehlerberichte, Feature-Anfragen verwalten
ProjectsKanban-Board für Projektmanagement
WikiDokumentation des Projekts
ActionsCI/CD-Pipelines (Automatisierung)

🔹 GitLab

FunktionErklärung
Merge Requests (MR)Äquivalent zu GitHub PR
IssuesFehlerberichte, Feature-Anfragen
EpicsÜbergeordnete Themen (mehrere Issues zusammenfassen)
MilestonesMeilensteine (Zieldaten für Issues)
CI/CDIntegrierte Pipelines (.gitlab-ci.yml)

🔹 Best Practices für Team-Tools

  1. Issues verwenden: Jedes Feature/Bug sollte ein Issue haben
  2. Pull Requests verknüpfen: Closes #123 in der PR-Beschreibung
  3. Templates verwenden: PR-Template für einheitliches Format
  4. Reviews erzwingen: "Require pull request reviews before merging" aktivieren
  5. CI/CD integrieren: Automatische Tests bei jedem PR

📝 Zusammenfassung

In diesem Kapitel haben Sie gelernt:

  • Team-Workflow-Grundablauf (klassischer Ablauf)
  • git clone detailliert (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).



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

Frei für alle Anfänger