Skip to content

Git Best Practices für Team-Kollaboration

Einführung

Über Befehle hinaus braucht erfolgreiche Zusammenarbeit gemeinsame Disziplin. Dieser Leitfaden listet pragmatische, durchsetzbare Praktiken.

Philosophie

  1. Klarheit > Cleverness
  2. Kleine Änderungen liefern schneller
  3. Automatisierung > manuelles Policing
  4. Reproduzierbarkeit = Zuverlässigkeit

Branch-Strategien

StrategieBeschreibungEinsatz
Trunk-BasedKurze Branches, schnelles Merge in mainHohe Geschwindigkeit + reifes CI
GitHub FlowFeature → PR → Merge → DeploySaaS / Continuous Delivery
Git Flowdevelop, Release-, Hotfix-BranchesVersionierte Produkte
Release TrainZeitbox-Merges + ReleasesMulti-Team-Koordination

Wähle das einfachste funktionierende Modell.

Commit Message Schema (Conventional)

<type>(<scope>): <summary>

<body>

<footer>

Types: feat, fix, docs, refactor, test, chore, perf. Automatische Changelogs werden möglich.

Durchsetzung per Hooks / CI

Beispiel commit-msg Hook mit commitlint.

PR Hygiene

PraxisZiel
Max Lines~400 (soft)
Review Turnaround< 24h
Checks100% grün
Issue verlinkt100%

Lange Branches vermeiden

  • Feature Flags
  • Kompatibilitäts-Layer
  • Dark Launches
  • Frühe Rebases

Hotfix Ablauf

bash
git checkout main
git pull
git checkout -b hotfix/critical-timezone
# fix + test
git push origin hotfix/critical-timezone
# PR → Merge → Tag → Deploy

Releases taggen

bash
git tag -a v2.3.0 -m "Release v2.3.0"
git push origin v2.3.0

Schutz von Main

  • Required Status Checks
  • Reviews erforderlich
  • Force Push verbieten
  • (Optional) Lineare Historie
  • Signierte Commits bei Bedarf

Große Repos / LFS

  • Binaries in Git LFS
  • Sparse Checkout für große Monorepos
  • CODEOWNERS für kritische Pfade

.gitignore

Minimal + projektspezifisch, keine generierten Artefakte.

Pre-Merge Checkliste

  • [ ] Tests grün
  • [ ] Lint/Format sauber
  • [ ] Security Scan ok
  • [ ] Keine offenen TODO ohne Ticket
  • [ ] Doku bei Verhaltensänderung angepasst

Policy History-Rewrites

AktionErlaubt?Hinweis
Rebase lokaler Feature-BranchJaVor dem Teilen
Force-Push geteilte BranchesSelten--force-with-lease
Rebase geschützter BranchNeinKonsumenten brechen
Squash MergeSituativWenn Commit-Granularität egal

Anti-Patterns

PatternProblemAbhilfe
Drive-by Force PushStört andereRechte einschränken
Gemischte AnliegenReview schwerAufsplitten
Stilles MergeNiedrige SichtbarkeitPR Reviews erzwingen
Direkt auf mainProd-RisikoBranch Protection

Dokumentationsanker

  • CONTRIBUTING.md
  • CODEOWNERS
  • Architektur-Entscheidungen (ADR)
  • Onboarding Cheatsheet

Metriken

  • Mean Time To Merge
  • Anteil PR > 1000 LOC
  • Flaky-Test-Rate
  • Revert-Häufigkeit

Zusammenfassung

Effektive Git-Kollaboration = soziale Absprachen + Automatisierung + Disziplin. Mache den guten Weg zum einfachen Weg.

Nächste Schritte

  • Hooks & Automation
  • Reset / Revert Strategien

Key Commands

bash
git tag -a <tag> -m "msg"
git push origin <tag>
git push origin --delete <branch>