in der Softwareentwicklung eingesetzt • ermöglicht Zusammenarbeit zwischen Entwicklern • erkennt Änderungen in Dateien • erleichtert das Zusammenführen von Änderungen • vollständige Projekthistorie von Änderungen • Rollback zu älteren Versionen • ermöglicht einen besseren Code-Review-Prozess ➔ verbessert den gesamten Workflow der Softwareentwicklung
die Verwendung von Git • benutzerfreundliche Oberfläche für die Verwaltung eines Repositories • wird aufgrund der Benutzerfreundlichkeit nicht nur in der Softwareentwicklung genutzt • jeder kann kostenlos ein öffentliches Git-Repository erstellen • besonders GitHub beliebt für Open-Source Projekte
Projekt • unabhängige Entwicklung von Funktionen (“Branching”) • Unterstützung bei der Zusammenführung von Code (“Merging”) • einfache Wiederherstellung von früheren Versionen • Nachvollziehbarkeit durch Projekthistorie • Integration für verschiedene Projektmanagement-Tools ➔ effiziente und effektive Softwareentwicklung im Team
von Git • Definition wie Codeänderungen verwaltet und organisiert werden • Strategien für Branching und Merging • legt fest, wie Releases und Hotfixes gehandhabt werden • gewährleistet wartbare und stabile Codebasis • konsistente und vorhersehbare Entwicklung • kann an die Bedürfnisse des Projekts und Teams angepasst werden • Weiterentwicklung durch Veränderungen des Projekts und des Teams
wird kontinuierlich auf den neuesten Stand gebracht • es werden Änderungen im Hauptzweig durchgeführt • Änderungen werden zum serverseitigen Repository hochgeladen • sollten Konflikte entstehen, müssen diese zunächst lokal gelöst werden
wechseln und Projekte mit einem ähnlichen Workflow entwickeln wollen Entwickler arbeitet alleine an einem Projekt es soll schnellstmöglich ein MVP erstellt werden Projekt befindet sich in der Anfangsphase
• Git-Branching Modell, das Feature-Branches und mehrere primäre Branches verwendet • es gibt mehrere und langlebige Branches • Entwicklungszweige haben strikte Zugriffsrechte • weist verschiedenen Branches spezifische Rollen zu
Feature-Branch • es wird ein Pull-Request erstellt, sobald das Feature fertig ist • im Pull-Requests wird über Änderungen diskutiert • Feature-Branch wird mit develop Branch zusammengeführt • für Releases wird zunächst ein separater Release-Branch erstellt
nach Git selbst, entwickelt • Git-flow wurde sehr populär und wird in vielen Teams als Allheilmittel behandelt • Trend geht in Richtung Webanwendungen, die fortlaufend bereitgestellt werden (Continuous Integration / Continuous Delivery) • es müssen selten mehrere Versionen einer Software unterstützt werden • Git-flow wirkt sich negativ auf Entwicklungszeit aus • Erfinder selbst empfiehlt Git-flow nicht mehr für Webanwendungen und Projekte, die einen Fokus auf regelmäßiger Veröffentlichung haben
benötigt • jede Zeile Code muss überprüft werden • Entwicklungszeit spielt oft keine Rolle Team mit vielen neuen Entwicklern • erfahrene Entwickler haben durch Pull-Requests mehr Kontrolle über den Code Produkt, in dem mehrere Versionen unterstützt werden müssen
Git-flow • es gibt einen Hauptzweig, der immer “deployable” ist (in der Regel main) • es wird nicht mehr zwischen Feature oder (Hot)-Fix Branches unterschieden
werden zum Feature-Branch hinzugefügt • es wird ein Pull-Request erstellt • Änderungen werden diskutiert und akzeptiert • Feature-Branch wird direkt in den main-Branch integriert • main-Branch wird kontinuierlich veröffentlicht
Feedbackschleifen • große Konflikte werden vermieden (“Merge Hell”) • es gibt eine aktuelle Version des Projekts • CI / CD wird vereinfacht bzw. ermöglicht
kurzlebige Feature-Branches • es gibt einen Hauptzweig • alle Entwickler haben Zugriff auf Hauptzweig • Hauptzweig bzw. main Branch wird kontinuierlich veröffentlicht • Feature-Flags werden benötigt
ermöglicht CI / CD • häufigere Releases • mehr Verantwortung für Entwickler • es muss nicht jede Zeile Code überprüft werden • kürzere Entwicklungszeit • A/B Tests möglich durch Feature-Flags
(fork) und eine lokale Kopie dieses Repositories • wird oft in Open-Source Projekten eingesetzt • Commits können integriert werden, ohne Schreibzugriff auf das offizielle Repository zu vergeben • baut oft auf Git-flow auf, d.h. es werden nur komplette Feature-Zweige in das offizielle Repository übernommen • flexible Möglichkeit für große, verteilte Teams (einschließlich nicht vertrauenswürdiger Dritter)
offiziellen Repositories • serverseitige Kopie wird auf das lokale System des Entwicklers geklont • ein neuer Feature-Branch wird lokal erstellt • Änderungen am Feature-Branch werden vorgenommen • Feature-Branch wird zur serverseitigen Kopie des Entwicklers verschoben • Entwickler erstellt einen Pull-Requests vom Feature-Branch zum offiziellen Repository • Änderungen werden genehmigt und zum offiziellen Repository hinzugefügt
einschätzen • Projektgröße und Komplexität berücksichtigen • Häufigkeit von Releases und Rolle von CI / CD bestimmen • Integration mit anderen Tools • Workflow dokumentieren und Richtlinien schreiben • Schulung und Unterstützung des Teams • Git-Workflow regelmäßig evaluieren • Effektivität des Workflows beobachten
konsistente und organisierte Codeverwaltung • erleichtert die Zusammenarbeit zwischen Teammitgliedern • Verbesserung der Codequalität durch Reviews und Feedback • unterstützt ein einfaches Rollback und eine Wiederherstellung früherer Versionen • effiziente Zuweisung von Aufgaben • verbessert die Produktivität des gesamten Teams • erhöht die Wartbarkeit von Projekten • Entwicklungsprozess ist vorhersehbarer
• Schlüsselfaktor für den Erfolg eines Projekts, da Git-Workflows eine effiziente und effektive Entwicklung fördern • Bewusstsein schaffen für verschiedene Git-Workflows • es gibt kein Allheilmittel • Git-Workflow dokumentieren und Entwickler schulen • Zusammenarbeit mit Git regelmäßig evaluieren und anpassen