Git und Versionskontrolle: Grundlegende Befehle und Workflows
Git ist das grundlegende Werkzeug der modernen Softwareentwicklung. Dieser Leitfaden behandelt Git's grundlegende Befehle, Branching-Strategien und Workflows.
Aktualisiert:Was ist Git und warum nutzen?
Git ist ein verteiltes Versionskontrollsystem. Verfolgt Codeänderungen, verwaltet verschiedene Versionen und erleichtert Teamarbeit.
Verteilte Struktur: Jeder Entwickler hat eine vollständige Kopie des Repositories. Ermöglicht Offline-Arbeit und schnelle Operationen.
Branching: Erstellen Sie separate Branches für verschiedene Features oder Fixes. Hält den Hauptcode (main/master) immer stabil.
Merge und Rebase: Branches in den Hauptbranch zusammenführen. Merge bewahrt Commit-Historie. Rebase erstellt lineare Historie.
Grundlegende Git-Befehle
git init: Neues Repository erstellen. git clone <url>: Bestehendes Repository kopieren.
git add <file>: Änderungen zur Staging Area hinzufügen. git add .: Alle Änderungen hinzufügen.
git commit -m "Nachricht": Gestagete Änderungen committen. Aussagekräftige Commit-Nachrichten schreiben.
git status: Repository-Status prüfen. git log: Commit-Historie anzeigen.
git diff: Unterschiede zwischen Arbeitsverzeichnis und Staging Area sehen. git diff --staged: Unterschiede zwischen Staging Area und letztem Commit sehen.
Branching und Merging
git branch <name>: Neuen Branch erstellen. git checkout <name> oder git switch <name>: Zu Branch wechseln.
git merge <branch>: Branch in aktuellen Branch zusammenführen. Fast-Forward Merge oder Three-Way Merge verwendet.
Merge-Konflikt: Manuelle Lösung bei widersprüchlichen Änderungen. Konfliktdateien bearbeiten, mit git add markieren, mit git commit abschließen.
git branch -d <name>: Branch löschen. git branch -D <name>: Nicht gemergten Branch zwangsweise löschen.
Remote Repository Operationen
git remote add origin <url>: Remote Repository hinzufügen. git remote -v: Remotes auflisten.
git push origin <branch>: Lokale Änderungen an Remote senden. git push -u origin main: Upstream Branch setzen.
git pull: Remote-Änderungen holen und mergen. git fetch: Remote-Änderungen holen (ohne Merge).
git push --force: Remote Branch zwangsweise aktualisieren (vorsichtig verwenden). git push --force-with-lease: Sichereres Force Push.
Branching-Strategien
Git Flow: main (Production), develop (Development), feature/* (neue Features), release/* (Release-Vorbereitung), hotfix/* (dringende Fixes).
GitHub Flow: main Branch + Feature Branches. Jeder Feature Branch wird via Pull Request in main gemergt. Einfach und effektiv.
Trunk-Based Development: Einzelner main Branch, kurzlebige Feature Branches (1-2 Tage). Kombiniert mit kontinuierlicher Integration (CI/CD).
Auswahlkriterien: Git Flow für große Projekte, GitHub Flow für kleine-mittlere Projekte, Trunk-Based Development für CI/CD-reife Teams.
Best Practices
Commit-Nachrichten: Imperative Stimmung verwenden ('Add feature' nicht 'Added feature'). Erste Zeile auf 50 Zeichen, Details auf 72 Zeichen begrenzen.
Atomic Commits: Jeder Commit sollte eine einzelne Änderung enthalten. Große Änderungen in kleine Commits aufteilen.
Branch-Benennung: Beschreibende Namen wie feature/user-authentication, bugfix/login-error, hotfix/security-patch verwenden.
.gitignore: Unnötige Dateien (node_modules, .env, build/) ignorieren. GitHub's gitignore-Vorlagen verwenden.
Pull Request: Pull Requests für Code Review verwenden. Jede Änderung sollte von mindestens einer Person überprüft werden.