Heim > Web-Frontend > js-Tutorial > Die besten Methoden zur Versionskontrolle, die jedes React-Entwicklungsteam kennen muss

Die besten Methoden zur Versionskontrolle, die jedes React-Entwicklungsteam kennen muss

Mary-Kate Olsen
Freigeben: 2024-11-08 09:16:01
Original
1068 Leute haben es durchsucht

Stellen Sie sich vor, Sie arbeiten mit einer Gruppe von Entwicklern zusammen, die eine komplexe LEGO-Struktur bauen, aber mit leicht unterschiedlichen Anweisungen für jede Person. Wenn die Versionskontrolle in vielen React-Anwendungen fehlschlägt, ist genau das der Fall. Erst letzte Woche startete ein Team ein scheinbar unkompliziertes Update seiner Website, doch anstatt die Dinge zu verbessern, löste es eine Kettenreaktion von Problemen aus.

Der Warenkorb funktionierte nicht mehr, die Anmeldeseite wurde leer und niemand konnte herausfinden, welche der letzten Änderungen das Chaos verursacht haben.

Das ist keine seltene Geschichte – sie passiert in Entwicklungsteams überall. Während die meisten Entwickler wissen, wie sie ihre Codeänderungen speichern (z. B. regelmäßige Snapshots ihres LEGO-Fortschritts erstellen), benötigen React-Projekte etwas Anspruchsvolleres. Warum? Denn React-Websites unterscheiden sich nicht allzu sehr vom Tetris-Videospiel, bei dem alle Teile perfekt zusammenpassen müssen. Und es ist nicht nur frustrierend, wenn sie nicht perfekt zusammenpassen; Dies könnte dazu führen, dass das Spiel schnell endet (Einnahmenverluste, unzufriedene Benutzer und sehr gestresste Entwickler). Es gibt jedoch eine bessere Methode, mit diesen Problemen umzugehen, und diese beginnt damit, dass Sie wissen, wie Sie Änderungen in Ihren React-Projekten überwachen und verwalten.

Einführung

In den ersten drei Quartalen des Jahres 2023 ergab eine GitHub-Analyse, dass es bei 64 % der React-Projekte aufgrund von Versionskontrollproblemen zu Rollbacks bei der Bereitstellung kam, wobei Komponentenabhängigkeitskonflikte fast die Hälfte dieser Vorfälle ausmachten. Für Teams, die umfangreiche React-Anwendungen verwalten, ist die durchschnittliche Zeit, die für die Lösung von Zusammenführungskonflikten aufgewendet wird, zwischen 2021 und 2023 von 2,5 Stunden auf 4,8 Stunden pro Woche gestiegen. Zeit, die in den Aufbau einer besseren Benutzererfahrung oder die Entwicklung neuer Funktionen hätte investiert werden können. Zwar gibt es inzwischen wirksamere Möglichkeiten, mit diesen Schwierigkeiten umzugehen, aber lassen Sie uns zunächst diese Situation durchgehen und sehen, ob Ihnen vielleicht etwas Ähnliches auffällt.

Ihr Team hat Stunden damit verbracht, an einem Update für ein React-Projekt zu arbeiten, und schließlich, nach diesen hektischen Stunden, die mit dem Update verbracht wurden, haben sie es endlich veröffentlicht, nur um festzustellen, dass eine kritische Komponente in der Produktion unterbrochen wurde. Das Schlimmste war, dass Ihr leitender Entwickler aufgrund eines wichtigen Meetings mit einem Großkunden nicht für die Lösung dieses Problems zur Verfügung stand. Und niemand konnte feststellen, wann oder wo die bahnbrechenden Änderungen eingeführt wurden, und es gibt bereits drei verschiedene Versionen der Staatsverwaltungslösung, die einander widersprechen. Klingt das nach einer Situation, die Sie schon einmal erlebt haben? Wussten Sie, dass etwa 78 % der React-Entwickler in den letzten beiden Quartalen dieses Jahres mindestens alle drei Monate ähnliche Situationen melden? Während die meisten Entwickler die Grundlagen des Speicherns ihrer Codeänderungen verstehen (Snapshots ihres Fortschritts erstellen) und natürlich die Grundlagen von Git kennen, erfordern React-Projekte aufgrund ihrer einzigartigen Herausforderungen, die viele Teams in diesem Wissen übersehen, immer eine ausgefeiltere Versionskontrollstrategie Laut aktuellen Branchenstudien könnte dieser Ansatz kritische Vorfälle um bis zu 72 % reduzieren.

Um Änderungen am Quellcode im Laufe der Zeit zu verwalten, ist die Versionskontrolle der Grundstein für den Erfolg Ihrer Softwareentwicklung. Was sie tut, ist kinderleicht und gibt Entwicklern die Möglichkeit:

  • Führen Sie eine gründliche Aufzeichnung aller Codeänderungen.
  • Verwalten Sie mehrere Softwareversionen.
  • Arbeiten Sie effektiv mit anderen Mitgliedern Ihres Teams zusammen.
  • Beheben Sie Fehler, indem Sie zu früheren Versionen zurückkehren.
  • Arbeiten Sie gleichzeitig an mehreren Funktionen

Wenn man sich die Fähigkeiten ansieht, die ein Entwickler bei der Verwendung von Versionskontrollsystemen erhält, muss man sagen, dass jeder React-Entwickler in der Lage sein sollte, in einer Umgebung zu arbeiten, in der seine React-Codebasis durchweg stabil ist, die Teamarbeit einfach ist und Rückfälle möglich sind Änderungen sind einfach. Um dies zu erreichen, müssen jedoch bestimmte Richtlinien und Praktiken berücksichtigt werden, auf die in diesem Artikel gebührend eingegangen wird. Wir behandeln die Best Practices für die Verwendung der Versionskontrolle mit React und erwägen dabei genau die Schritte, die Sie unternehmen sollten. Die Auswahl des geeigneten Versionskontrollsystems ist der erste Schritt, durch den wir Sie führen, um einen produktiveren und kooperativeren Arbeitsbereich zu schaffen. Anschließend erstellen wir verständliche Commit-Nachrichten und implementieren effektive Verzweigungsstrategien. Die Bedeutung von Codeüberprüfungen, der Verwaltung von Abhängigkeiten und der Einrichtung von kontinuierlicher Integration und Bereitstellung (CI/CD) wird ebenfalls behandelt. Abschließend besprechen wir den Umgang mit Streitigkeiten und Rollbacks sowie die Bedeutung einer klaren Kommunikation und Dokumentation für Entwickler.

TL:DR

Best Version Control Practices Every React Development Team Needs To Know

#1/8: Das richtige Versionskontrollsystem auswählen

Die Wahl des richtigen Versionskontrollsystems hängt von einigen Faktoren ab, wie z. B. den Anforderungen des Projekts, der Größe des Teams und dem gewünschten Arbeitsablauf. Jedes VCS hat gleiche Vor- und Nachteile. Es ist jedoch ratsam, diejenige auszuwählen, die Ihren persönlichen oder beruflichen Anforderungen am besten entspricht! Hier sind einige der bekanntesten:

1. Git:

Git ist eine Art verteiltes VCS, bei dem jeder Entwickler eine vollständige Kopie des Repositorys verwaltet. Diese verteilte Natur von Git macht es für Entwickler einfacher, offline zu arbeiten und lokale Zweige zu erstellen, ohne eine ständige Verbindung zu einem zentralen Server zu benötigen.

Neben den Vorteilen von Git ist es wichtig zu sagen, dass die leistungsstarken Verzweigungs- und Zusammenführungsfunktionen von Git zu den größten Vorteilen gehören, die es bietet. Dadurch können Entwickler problemlos neue Funktionen testen oder andere Zweige effektiv debuggen, ohne den Hauptcode zu gefährden. Diese durch diese Verzweigungseffekte geschaffene Isolation stellt sicher, dass alle Codes ohne Unterbrechungen erstellt werden, was parallele Entwicklungsströme ermöglicht.

Gits Struktur ist darauf ausgelegt, große Projekte gut zu bewältigen. Es eignet sich sowohl für kleine Gruppen als auch für große Unternehmen, da es mit vielen Dateien und vielen Personen umgehen kann, ohne langsamer zu werden.

Dahinter steckt eine starke Community und es stehen viele Tools zur Verfügung. Da viele Leute Git verwenden, wurden viele Tutorials und Ressourcen erstellt. Dies macht Git für neue Benutzer einfacher und bietet gleichzeitig erweiterte Tools für diejenigen, die es gut kennen.

Um mehr über Git zu erfahren: Klicken Sie hier

2. Mercurial:

Mercurial ist wie Git auch ein verteiltes Versionskontrollsystem (VCS). Dies bedeutet, dass Mercurial eine dezentrale Entwicklung ermöglicht, sodass Entwickler offline mit lokalen Kopien von Repositorys arbeiten können, die den vollständigen Verlauf enthalten.

Mercurial ist weithin für seine einfache Anwendung bekannt. Dank seiner einfachen Befehlszeilenschnittstelle und attraktiven grafischen Benutzeroberflächen hat es sich den Ruf erworben, einsteigerfreundlich zu sein. Diese Benutzerfreundlichkeit beeinträchtigt jedoch keineswegs die Funktionalität, da Mercurial komplizierte Arbeitsabläufe effektiv mit leistungsstarken Verzweigungs- und Zusammenführungsfunktionen verwaltet.

Mercurial ist hinsichtlich seiner Leistung gut in der Abwicklung großer Projekte. Dank der Kombination aus Geschwindigkeit, Benutzerfreundlichkeit und leistungsstarken Funktionen erledigt es seine Vorgänge schnell und effektiv und ist damit eine zuverlässige und vertrauenswürdige Option für Teams, die an großen Codebasen arbeiten. Aufgrund dieser Vorteile wurde Mercurial zu einer bevorzugten Option bei Entwicklern und Organisationen, die auf der Suche nach einem zuverlässigen Versionskontrollsystem waren.

Um mehr über Mercurial zu erfahren: Klicken Sie hier

3. Subversion (SVN):

SVN hingegen ist ein zentralisiertes Versionskontrollsystem, bei dem das Client-Server-System durch einen zentralen Server verankert ist, der den gesamten Projektverlauf hostet. Die Einrichtung ist einfach und erfordert nur eine begrenzte Anzahl von Schritten. Dadurch eignet es sich ideal für den Einsatz in kleinen Projekten mit spezifischen Entwicklungsaktivitäten, abhängig vom verantwortlichen Team.

Aber SVN ist nicht sehr stark in der Verzweigung und Zusammenführung von Funktionen und das ist einer der Gründe, warum es nicht so frei ist wie die verteilten Versionskontrollsysteme für umfangreiche Arbeiten. SVN verfügt außerdem über die geschätzte Fähigkeit, atomare Commits zu unterstützen, da Benutzer nicht nur einen Teil eines Änderungssatzes implementieren können. Darüber hinaus unterstützt SVN Windows gut, um sicherzustellen, dass seine Arbeit immer allgemein in die Windows-Umgebung integriert wird.

Um mehr über SVN zu erfahren: Klicken Sie hier

Neben diesen Arten von VCS können auch andere VCS identifiziert werden. Allerdings werden die anderen Typen heutzutage in der modernen Webentwicklung nicht häufig verwendet, obwohl sie auch ihre eigenen Verwendungszwecke haben. Sie werden in diesem Artikel nicht behandelt, da sie für aktuelle Webentwicklungsparadigmen irrelevant sind. Auch wenn sie möglicherweise über spezifische Funktionalitäten für bestimmte Nischen verfügen, erfüllen sie nicht die üblichen Webentwicklungsanforderungen und verfügen nicht über die starke Grundlage und Unterstützung in Bezug auf Tools und Community, die die heutige Entwicklung erfordert.

Warum Git die bevorzugte Wahl für die React-Entwicklung ist

In der Praxis der Arbeit im Rahmen von React hat sich Git zu einem unverzichtbaren Werkzeug entwickelt. Obwohl es auch andere Systeme gibt, die alle ihre eigenen Vor- und Nachteile haben; Dennoch scheint Git all diese Funktionen mit Flexibilität und aktiven Benutzern auf der ganzen Welt zu verbinden und ist daher die erste Wahl für die meisten Entwickler im Allgemeinen sowie für React-Entwickler im Besonderen. Durch seine Benutzerfreundlichkeit bei hohen Arbeitsabläufen, effektive Teamarbeit und die Möglichkeit zum freien Experimentieren hat es seine Position als Anlaufstelle gefestigt.

Best Version Control Practices Every React Development Team Needs To Know

Abschließend stellen wir fest, dass alle betrachteten VCS ihre Stärken und Schwächen haben und die Wahl des besten VCS wiederum von den Projektanforderungen, der Anzahl der Teilnehmer und den persönlichen Arbeitspräferenzen abhängt. Aber für 89 % der React-Entwickler gibt es kein besseres Tool als Git.

Die richtige Wahl treffen

Die Entscheidung, welches VCS verwendet werden soll, ist sehr wichtig. Es handelt sich um einen Anruf, der sich auf Ihr Team, das spezifische Projekt sowie die Geschwindigkeit auswirkt, mit der Sie die Entwicklung Ihres Projekts abschließen. Beeilen Sie sich nicht, nehmen Sie sich Zeit und schauen Sie sich alle Optionen an, bevor Sie sich entscheiden, welche die beste für Sie ist, und berücksichtigen Sie dabei die unten aufgeführten Faktoren.

Best Version Control Practices Every React Development Team Needs To Know

Best Practices

Der Schlüssel zum Erfolg jedes VCS ist die ordnungsgemäße Implementierung, die Zustimmung des Teams und die konsequente Einhaltung von Best Practices. Wenn Sie jedoch regelmäßig Schulungen durchführen, über eine klare Dokumentation und etablierte Arbeitsabläufe verfügen, ist eine effektive Versionskontrolle unabhängig vom gewählten System nicht weit von Ihnen entfernt. Befolgen Sie unabhängig vom gewählten VCS die folgenden Best Practices:

Best Version Control Practices Every React Development Team Needs To Know

#2/8: Einrichten Ihres Git-Workflows

Jeder weiß, dass jedes Projekt in der Softwareentwicklung nur dann als erfolgreich bezeichnet werden kann, wenn es einen strikten Git-Workflow in Teamumgebungen hat. Zunächst stelle ich Ihnen die am häufigsten verwendeten Verzweigungsstrategien vor und helfe Ihnen bei der Auswahl der besten für das jeweilige Projekt.

Best Version Control Practices Every React Development Team Needs To Know

Verzweigungsstrategien

1. Git Flow:

Git Flow ist eine leistungsstarke Verzweigungsstrategie, die für Projekte mit geplanten Releases entwickelt wurde. Es wurde von Vincent Driessen eingeführt und ist in vielen Organisationen zum Standard geworden. Es folgt einer strengen Verzweigungshierarchie und verwendet langlebige Zweige für Funktionen und Korrekturen.

Hauptzweige:

  • main/master: Speichert den offiziellen Veröffentlichungsverlauf
  • entwickeln: Dient als Integrationszweig für Funktionen
  • feature/*: Enthält neue Feature-Entwicklungen
  • release/*: Bereitet sich auf Produktionsfreigaben vor
  • hotfix/*: Behebt kritische Fehler in der Produktion

Arbeitsablauf

  • Die Funktionsentwicklung beginnt mit der Entwicklung
  • Funktionen werden wieder in die Entwicklung integriert
  • Der Release-Zweig wird aus der Entwicklung erstellt
  • Nach dem Testen wird die Veröffentlichung mit der Haupt- und der Entwicklungsversion zusammengeführt
  • Hotfixes verzweigen von „Main“ und führen sowohl zu „Main“ als auch zu „Develop“ zusammen

Wir werfen einen Blick auf dieses reale App-Entwicklungsbeispiel für das Hinzufügen einer Stripe-Zahlungsfunktion zu einer Shopping-App.

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vorbereiten einer Veröffentlichung

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beispiel für einen Notfall-Hotfix

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vorteile

  • Gut geeignet für geplante Veröffentlichungen
  • Klare Trennung der laufenden Arbeiten
  • Hervorragend geeignet für die Verwaltung mehrerer Versionen

Nachteile

  • Komplex für kleinere Projekte
  • Kann die kontinuierliche Lieferung verlangsamen
  • Overhead in der Filialleitung

2. GitHub-Flow:

Ein einfacherer Workflow mit einem einzigen langlebigen Zweig (normalerweise Hauptzweig) und kurzlebigen Feature-Zweigen im Vergleich zu Git Flow. Der Schwerpunkt liegt auf kontinuierlicher Bereitstellung und Bereitstellung, und seine Commits erfolgen über Pull-Requests an den Hauptzweig.

Grundprinzipien

  • Der Hauptzweig ist immer einsetzbar
  • Alle Änderungen über Feature-Branches
  • Pull-Anfrage für Diskussionen
  • Unmittelbar nach der Zusammenführung bereitstellen

Arbeitsablauf

  • Zweig vom Hauptzweig erstellen
  • Commits hinzufügen
  • Pull-Anfrage öffnen
  • Überprüfen und diskutieren
  • Bereitstellen und testen
  • Mit Hauptseite zusammenführen

Mithilfe von GitHub-Befehlen sehen wir uns dieses Beispiel einer Funktionsentwicklung an – das Hinzufügen eines Warenkorbs zu einer App.

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Bereitstellungsprozess

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vorteile

  • Einfach und unkompliziert
  • Hervorragend geeignet für den kontinuierlichen Einsatz
  • Besser für kleinere Teams
  • Reduzierter Overhead

Nachteile

  • Weniger geeignet für mehrere Versionen
  • Begrenzte Unterstützung für gestaffelte Veröffentlichungen
  • Erfordert möglicherweise anspruchsvolles CI/CD

3. Trunk-basierte Entwicklung:

Beinhaltet die häufige Integration kleiner, überschaubarer Änderungen direkt in die Hauptniederlassung, oft mehrmals täglich. Der Schwerpunkt liegt auf kontinuierlicher Integration und Freigabe.

Schlüsselkonzepte

  • Kurzlebige Funktionszweige
  • Direkte Commits an den Hauptstamm
  • Feature-Flags für unvollständige Arbeit
  • Schwerpunkt auf kleinen, häufigen Commits

Arbeitsablauf

  • Kleine Feature-Zweige (maximal 1-2 Tage)
  • Kontinuierliche Integration in den Stamm
  • Funktion schaltet für unvollständige Funktionen um
  • Regelmäßige Bereitstellungen vom Trunk

Kurzlebiger Feature-Zweig

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beispiel für Funktionsumschaltungen

# Start new feature
git checkout -b feature/shopping-cart

# Make changes and commit regularly
git add src/cart.js
git commit -m "Add shopping cart base structure"

git add src/components/CartItem.jsx
git commit -m "Add cart item component"

# Push to remote and create PR
git push origin feature/shopping-cart

# After PR review, merge via GitHub UI
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vorteile

  • Vereinfacht die kontinuierliche Integration
  • Reduziert Zusammenführungskonflikte
  • Schnellere Feedback-Zyklen
  • Besser für erfahrene Teams

Nachteile

  • Erfordert eine starke Testkultur
  • Möglicherweise sind Funktionsumschaltungen erforderlich
  • Kann für weniger erfahrene Teams eine Herausforderung sein

Etablierung eines Verzweigungsmodells

1. Funktionszweige:

Getrennte Zweige für die Entwicklung neuer Funktionen ermöglichen isoliertes Arbeiten, ohne den Hauptzweig zu beeinträchtigen. Nach Abschluss und Test der Funktion wieder in den Hauptzweig eingegliedert. Feature-Branches sind die Grundlage der meisten Git-Workflows.

Best Practices

Richtlinien

  • Halten Sie die Zweige kurzlebig (maximal 1-2 Wochen)
  • Eine Funktion pro Zweig
  • Regelmäßige Commits mit klaren Botschaften
  • Aktualisieren Sie regelmäßig vom übergeordneten Zweig
# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lebenszyklus

  • Aus der neuesten Entwicklung oder Hauptversion erstellen
  • Regelmäßige Rebases, um auf dem Laufenden zu bleiben
  • Codeüberprüfung vor der Zusammenführung
  • Nach dem Zusammenführen löschen

2. Zweige freigeben:
Wird bei der Vorbereitung einer neuen Version erstellt. Sie helfen dabei, den Code zu stabilisieren und zu testen, bevor er live geht. Eventuelle Fehlerbehebungen oder letzte Anpassungen werden hier vorgenommen, bevor sie wieder mit dem Hauptzweig zusammengeführt werden.

Schlüsselaspekte

1. Schöpfung

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Zweck

  • Versionsfehler
  • Dokumentationsaktualisierungen
  • Fehlerbehebungen
  • Keine neuen Funktionen

3. Management

  • Aus Entwicklung erstellen
  • Mit Main und Develop zusammenführen
  • Tag-Releases im Hauptbereich
  • Nach dem Zusammenführen löschen

3. Hotfix-Zweige: Wird für kritische Fehlerbehebungen in der Produktion verwendet. Aus dem Hauptzweig wird ein Hotfix-Zweig erstellt, in dem der Fix angewendet, getestet und dann wieder in den Haupt- und den Release-Zweig zusammengeführt wird.

Durchführung

1. Schöpfung

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Prozess

  • Zweig vom Hauptzweig
  • Einzelnes Problem beheben
  • Mit Main und Develop zusammenführen
  • Neue Version markieren

3. Richtlinien

  • Minimaler Umfang
  • Schnelle Abwicklung
  • Notfallüberprüfungsprozess
  • Sofortiger Einsatz

Entscheidungsmatrix

Factor Git Flow GitHub Flow Trunk-Based
Team Size Large Small-Medium Any
Release Cycle Scheduled Continuous Continuous
Complexity High Low Medium
Experience Needed Medium Low High
Version Management Excellent Limited Limited

#3/8: Best Practices für Commit-Nachrichten

Commit-Nachrichten sind lediglich kurze Beschreibungen, die von Entwicklern geschrieben werden, wenn sie Änderungen an ihren Codes speichern. Es beschreibt, was Sie geändert haben und warum Sie diese Änderungen vorgenommen haben. Immer wenn eine Datei aktualisiert oder eine neue Codezeile erstellt wird, wird im Versionskontrollsystem (z. B. Git) ein Commit erstellt.

Klare und prägnante Commit-Nachrichten schreiben

Das Verfassen klarer Commit-Nachrichten ist aus mehreren Gründen wichtig – für eine klare Kommunikation, strukturierte Daten und Integrationszwecke. Sie dokumentieren ein Projekt zu einem bestimmten Zeitpunkt und an einem bestimmten Ort, sodass andere Entwickler, einschließlich des Autors selbst, leichter erkennen können, warum Änderungen vorgenommen wurden. Gute Commit-Nachrichten würden es jemandem leicht ermöglichen, den Verlauf eines Projekts abzurufen und die Zeit zu reduzieren, die man damit verbringt, den Verlauf zu entschlüsseln. Bei Commit-Nachrichten gibt es immer mehr Informationen als nur den Code, den die Personen erhalten, die die Änderungen prüfen.

Deskriptoren in gut geschriebenen Commit-Nachrichten machen den Prozess der Codeüberprüfung außerdem weniger zeitaufwändig. Es hilft Prüfern, besser zu verstehen, warum solche Änderungen vorgenommen werden müssen, was ihre Aufmerksamkeit auf die richtigen Elemente des Codes lenkt und Verwirrung während des Prüfprozesses verringert.

Zweige mit einem sauberen Commit-Verlauf zu versorgen, ist für die Aufrechterhaltung eines Projekts von entscheidender Bedeutung. Standard-Commit-Nachrichten ermöglichen auch das Debuggen, da Sie über den Änderungsverlauf verfügen und erkennen können, wann ein Fehler tatsächlich aufgetreten ist. Dies erleichtert das Debuggen und kann auch schnell rückgängig gemacht werden, wenn die Änderungen rückgängig gemacht werden müssen. Commit-Nachrichten helfen auch beim Erstellen nützlicher Änderungsprotokolle.

Last but not least erleichtern einfache Commit-Nachrichten das Verständnis des Ziels einer Änderung für die anderen Teammitglieder und sorgen so für eine reibungslosere Zusammenarbeit an einem Projekt.

Struktur einer guten Commit-Nachricht

Eine gut strukturierte Commit-Nachricht folgt normalerweise diesem Format:

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zu den Schlüsselelementen gehören:

1. Betreffzeile (Erste Zeile):

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Nachrichtentext:

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

3. Fußzeile:

Alle zusätzlichen Informationen, wie z. B. Links zu verwandten Problemen oder Hinweise zu wichtigen Änderungen.

Beispiel für eine gute Commit-Nachricht:

# Start new feature
git checkout -b feature/shopping-cart

# Make changes and commit regularly
git add src/cart.js
git commit -m "Add shopping cart base structure"

git add src/components/CartItem.jsx
git commit -m "Add cart item component"

# Push to remote and create PR
git push origin feature/shopping-cart

# After PR review, merge via GitHub UI
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

und/oder

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Commit-Häufigkeit: Wie oft sollten Sie Änderungen committen?

Änderungen werden in der Regel häufig vorgenommen, wobei kleinere Änderungen häufiger als die beste Vorgehensweise angesehen werden, obwohl auch andere Faktoren eine Rolle spielen können. Eine große Anzahl von Commits ermöglicht es, die Entwicklung in kleine Segmente zu unterteilen, die Leistung mit früheren Perioden zu vergleichen und bei Bedarf Fehler schnell zu beheben. Bei Änderungen empfiehlt es sich jedoch, pro Commit eine Änderung pro Verantwortung vorzunehmen. Ein Commit sollte eine einzelne Änderung oder eine Reihe von Änderungen erfassen, die logisch zusammen verwendet werden, um eine Funktion zu implementieren. Dadurch bleibt ein übersichtlicher, sinnvoller und leicht zu moderierender Verlauf des Commits erhalten. Darüber hinaus sollte es möglich sein, mit jedem Commit einen Meilenstein zu erstellen, egal wie klein die vorgenommene Änderung ist; Die Idee von Trident besteht darin, ein Werk zur Nutzung fertigzustellen, auch wenn es nur als Grundlage für folgende Änderungen erstellt wurde. Die Einhaltung dieser Grundsätze ermöglicht es, den Reaktor des Versionsverlaufs sauber und klar zu halten.

Sie sollten Änderungen festschreiben, wenn:

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Kleine, häufige Commits vs. große, seltene Commits

1. Kleine, häufige Commits:

Bei der Verwendung von SCM wird empfohlen, zahlreiche kleinere Updates anstelle einiger großer Updates durchzuführen, da erstere den Versionsverlauf weniger wahrscheinlich verzerren. Häufige und kurze Commits haben auch eine Reihe von Vorteilen. Sie bieten einen linearen/richtigen Verlauf von Änderungen, erleichtern Besprechungen zur Codeüberprüfung, minimieren die Wahrscheinlichkeit großer, störender Änderungen und erleichtern die kontinuierliche Integration und das Testen.

Risikokontrolle, Kontrolle des Ablaufs sowie die Bildung des Teams sind weitere Vorteile, die mit kleinen, häufigen Commits verbunden sind. Aus der Sicht des Risikomanagements bedeuten häufigere Commits, dass eine bestimmte Änderung einfacher rückgängig gemacht werden kann, die Wahrscheinlichkeit von Zusammenführungskonflikten geringer ist, auftretende Probleme auf einen kleinen Bereich beschränkt sind und die Grundsicherung des Codes häufiger durchgeführt wird.
Was die Flusskontrolle in der Entwicklung betrifft, so finden viele Leute kleine Commits verständlicher, was zur Vereinfachung von Codeüberprüfungen beiträgt und im Hinblick auf einen detaillierteren Versionsverlauf von großer Bedeutung ist, der wiederum Aufschluss über den eindeutigen Entwicklungsfluss gibt . Im Hinblick auf die Teamzusammenarbeit führen kleine Commits zu kürzeren Feedbackschleifen, einer schnelleren Integration in andere Änderungen, Einblick in den Fortschritt und weniger Kopfschmerzen beim Zusammenführen.

Alles in allem können die täglichen Commits als großer Vorteil gegenüber großen, in Abständen vorgenommenen Commits angesehen werden, die als Best Practice für die Versionskontrolle und die kollaborative Softwareentwicklung genutzt werden sollten.

2. Große, seltene Commits:

Bei umfangreichen Commits, insbesondere solchen, die sporadisch erfolgen, können eine Reihe von Problemen auftreten. Das gleichzeitige Aktualisieren mehrerer nicht zusammenhängender Elemente kann zu Überschneidungen verschiedener Änderungen führen, wodurch es schwierig wird, eine Änderung anhand des Commit-Verlaufs voneinander zu unterscheiden. Dies stellt ein potenzielles Problem dar, da es umständlich wird, die Ursache von Problemen zu identifizieren, die in einem solchen Programm auftreten können. Sie haben außerdem herausgefunden, dass die Wahrscheinlichkeit hoch ist, dass mehr als ein Fehler auftritt, was den Debugging- und Problemlösungsprozess noch schwieriger macht.

Nicht triviale Änderungen, die nur gelegentlich vorgenommen werden, verursachen ebenfalls Probleme bei Codeüberprüfungen. Dadurch wird es für den Prüfer schwieriger, alle Aspekte der Änderung zu studieren und zu verstehen, was zu einer Lücke oder sogar unvollständigen Bewertungen führen könnte.

Es gibt jedoch einige wesentliche Faktoren, die auf große, seltene Commits zurückzuführen sind. Dazu gehört die Wahrscheinlichkeit, auf Zusammenführungskonflikte zu stoßen, die Überprüfung der Änderungen wird schwieriger, es besteht möglicherweise die Möglichkeit, dass bei Fehlern mehr Arbeit verloren geht, und es wird schwieriger, die Änderungen bei Bedarf rückgängig zu machen.

Große, seltene Commits haben auch das Potenzial, große Auswirkungen auf die Entwicklung zu haben. Dies kann zu anspruchsvollen Debugging-Prozessen führen, Messungen der zeitlichen Entwicklung erschweren, das Verständnis einzelner Revisionen beeinträchtigen und die Entwicklung der Codebasis grundsätzlich erschweren.

Es gibt mehrere empfohlene Commit-Muster, die Sie beim Commit von Änderungen an Ihrer Codebasis beachten sollten. Hier ist ein Bild, das die Verwendung beschreibt

Best Version Control Practices Every React Development Team Needs To Know

Tipps zur Aufrechterhaltung guter Commit-Praktiken:

Um gute Commit-Praktiken sicherzustellen, sollten Sie Folgendes tun:

1. Planung:

  • Planen Sie Ihre Änderungen vor dem Codieren
  • Teilen Sie große Aufgaben in kleinere, logische Commits auf
  • Identifizieren Sie logische Haltepunkte in Ihrer Arbeit
  • Bedenken Sie, welche Auswirkungen Ihre Änderungen auf andere haben können

2. Überprüfungsprozess:

  • Überprüfen Sie Ihre Änderungen, bevor Sie sie übernehmen
  • Verwenden Sie git diff, um die Änderungen zu überprüfen, die Sie übernehmen möchten
  • Überprüfen Sie, ob unbeabsichtigte Änderungen vorliegen
  • Stellen Sie sicher, dass Ihre Commit-Nachrichten klar und beschreibend sind

3. Teamkoordination:

  • Kommunizieren Sie Ihre Commit-Muster mit Ihrem Team
  • Etablieren Sie Teamkonventionen für Commit-Praktiken
  • Verzweigungsstrategien effektiv nutzen (z. B. Feature-Branches, Pull-Requests)
  • Behalten Sie einheitliche Standards in der gesamten Codebasis Ihres Teams bei

#4/8: Best Practices für Pull-Anfragen

Eine Pull-Anfrage ist eine Möglichkeit, in einer kollaborativen Umgebung Änderungen an einer Codebasis vorzuschlagen. Stellen Sie sich das so vor, als würden Sie sagen: „Leute, überprüfen Sie meine Änderungen in der Kopierquelle – würde es Ihnen gefallen, wenn ich sie zum Repository beitragen würde?“ Pull-Anfragen sind für Plattformen wie GitHub, GitLab und Bitbucket von zentraler Bedeutung.

Hier ist der typische Ablauf des Pull-Request-Prozesses:

  • Ein Entwickler erstellt einen Zweig aus der Hauptcodebasis
  • Sie nehmen ihre Änderungen in diesem Zweig vor
  • Sie erstellen eine Pull-Anfrage, um vorzuschlagen, ihre Änderungen wieder zusammenzuführen
  • Andere Entwickler überprüfen den Code, hinterlassen Kommentare und schlagen Verbesserungen vor
  • Nach der Genehmigung werden die Änderungen im Hauptzweig zusammengeführt

Grundprinzipien beim Erstellen effektiver Pull-Anfragen

Eine gute Pull-Anfrage sollte:

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

PR-Titel und Beschreibung

Titelformat

  • Verwenden Sie ein einheitliches Format: [Typ]: Kurzbeschreibung
  • Typen: feat, fix, docs, style, refactor, test, chore
  • Beschränken Sie sich auf maximal 72 Zeichen
  • Verwenden Sie den Imperativ („Funktion hinzufügen“, nicht „Funktion hinzugefügt“)

Beispiel:

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beschreibungsvorlage

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Checkliste für Pull Request

# Start new feature
git checkout -b feature/shopping-cart

# Make changes and commit regularly
git add src/cart.js
git commit -m "Add shopping cart base structure"

git add src/components/CartItem.jsx
git commit -m "Add cart item component"

# Push to remote and create PR
git push origin feature/shopping-cart

# After PR review, merge via GitHub UI
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zielen Sie bei der Größe auf < 400 Zeilen Code geändert und wenn es > 1000 Zeilen, denken Sie unbedingt über eine Aufteilung der Codes nach. Gruppieren Sie alle zugehörigen Änderungen der Reihe nach und sollten logisch sein. Trennen Sie das Refactoring von den Funktionsänderungen und halten Sie den Commit-Verlauf sauber und aussagekräftig.

Wenn Sie auf Feedback antworten, stellen Sie sicher, dass Sie alle Kommentare berücksichtigen und offen für Vorschläge bleiben. Wenn Sie auf Feedback zurückweisen müssen, begründen Sie dies klar und deutlich. Stellen Sie nach wichtigen Diskussionen sicher, dass Sie die PR-Beschreibung aktualisieren, um die wichtigsten Ergebnisse dieser Gespräche widerzuspiegeln.

Best Version Control Practices Every React Development Team Needs To Know

#5/8: Best Practices für den Zusammenführungsprozess

Zusammenführen ist ein Prozess, bei dem Änderungen, die in einem oder zwei Quellzweigen vorgenommen und festgeschrieben wurden, in denselben Stamm integriert werden. Dieser Prozess ähnelt dem Kombinieren einer Arbeit an einem Dokument und einer anderen an einem anderen und umfasst mehrere Entwickler, die unabhängig voneinander arbeiten, um ihre Arbeit in einer endgültigen Version zu integrieren. Diese Aktivität ist für die Erstellung einer sauberen Quellcodebasis und daher eine gemeinsame Anstrengung in Teams unerlässlich.

Ein häufiges Szenario hierfür wäre:

  • Funktionsintegration:
# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Bugfix-Integration:
# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Arten von Zusammenführungen

1. Direkte Zusammenführung:

Die direkte Merge-Integration ist weniger kompliziert und speichert den Verlauf aller Commits in einem einzigen Stream. Dies erleichtert zwar die Integration zwischen Zweigen, macht aber auch die Verlaufsstruktur dort kompliziert, wo Zweige miteinander in Beziehung stehen. Diese Zusammenführungsstrategie eignet sich am besten für kleinere Teams, da sie in die potenziell komplexe Geschichte eingeht, da weniger Mitglieder beteiligt waren.

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vor dem Zusammenführen:

# Start new feature
git checkout -b feature/shopping-cart

# Make changes and commit regularly
git add src/cart.js
git commit -m "Add shopping cart base structure"

git add src/components/CartItem.jsx
git commit -m "Add cart item component"

# Push to remote and create PR
git push origin feature/shopping-cart

# After PR review, merge via GitHub UI
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Nach der Zusammenführung:

# After PR is merged to main
git checkout main
git pull origin main

# Deploy
npm run deploy

# If issues found
git checkout -b fix/cart-total
git add src/cart.js
git commit -m "Fix cart total calculation"
git push origin fix/cart-total
# Create PR for the fix
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ein echtes Beispiel mit Commit-Nachrichten

# Create short-lived branch
git checkout -b feature/add-to-cart-button

# Work fast (1-2 days max)
git add src/components/AddToCart.jsx
git commit -m "Add to cart button component"

# Regular integration to main
git checkout main
git pull origin main
git merge feature/add-to-cart-button
git push origin main
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Zusammendrücken und zusammenführen:

Dies ist eine weitere Methode, bei der alle Commits aus der Pull-Anfrage vor der Zusammenführung in einem einzigen Commit zusammengefasst werden. Auf diese Weise ist der Commit-Verlauf einfach und übersichtlich und viel einfacher zu erklären. Squash and Merge verbessert auch die Lesbarkeit von Änderungen, da jede Funktion über einen einzigen Commit verfügt und bei Bedarf einfacher rückgängig gemacht werden kann. Der einzige Nachteil dieser Methode besteht darin, dass Commit-Details nicht zugänglich sind.

// Feature toggle implementation
const FEATURES = {
  NEW_CHECKOUT: process.env.ENABLE_NEW_CHECKOUT === 'true',
  DARK_MODE: process.env.ENABLE_DARK_MODE === 'true',
};

// Usage in code
if (FEATURES.NEW_CHECKOUT) {
  return <NewCheckoutProcess />;
} else {
  return <LegacyCheckout />;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vor dem Squash:

feature/ticket-number-brief-description
feature/user-authentication
feature/JIRA-123-payment-gateway
Nach dem Login kopieren
Nach dem Login kopieren

Nach dem Zusammendrücken und Zusammenführen:

release/v1.0.0
release/2024.03
Nach dem Login kopieren

Ein echtes Beispiel mit Commit-Nachrichten:

hotfix/v1.0.1
hotfix/critical-security-fix
Nach dem Login kopieren

3. Rebase & Merge:

Diese Strategie ist eine Möglichkeit, den Änderungsfluss innerhalb der Arbeitsumgebung zu manipulieren, nachdem eine Pull-Anfrage erstellt wurde. Diese Form des Git-Workflows zielt darauf ab, die Änderungen aus der aktuellen Pull-Anfrage im Hauptzweig neu zu basieren, bevor eine Zusammenführung durchgeführt wird. Dieser Ansatz sorgt dafür, dass der Commit-Verlauf in linearer Form vorliegt, sodass die Verzweigungspunkte im Repository sauber sind. Dadurch wird die Projektion von Änderungen und die Verwaltung des Commit-Verlaufs linearer und somit leichter verständlich.
Allerdings kann diese Methode nur von jemandem mit ausreichenden Git-Kenntnissen ordnungsgemäß ausgeführt werden, da das Rebasing manchmal mühsam sein kann und aufgrund einiger Konflikte möglicherweise das Eingreifen eines Experten erforderlich ist.

Lassen Sie mich Ihnen anhand von Beispielen zeigen, wie Rebase und Merge funktionieren.

<type>: Short summary (50 chars or less)

Detailed explanation of the change
[Optional: Include motivation for the change and contrasts with previous behavior]

[Optional: Include any breaking changes]

[Optional: Include any related ticket numbers or references]
Nach dem Login kopieren

Ein praktisches Beispiel für den Prozess:
Ausgangszustand:

- Keep it under 50 characters (< 50 chars)
- Start with a category/type (feat, fix, docs, style, refactor, test, chore)
- Use imperative mood ("Add feature" not "Added feature")
- Don't end with a period
- Capitalize the first letter
Nach dem Login kopieren

Nach dem Rebase:

- A more detailed explanation of the changes. If necessary (wrap at 72 characters)
- Separate from subject with a blank line
- Explain what and why vs. how
- Include context and consequences
- Clear and concise
- Use bullet points for multiple points
Nach dem Login kopieren

Nach der Zusammenführung:

feat: Add user authentication system

- Implement JWT-based authentication
- Add login and registration endpoints
- Include password hashing with bcrypt
- Set up refresh token mechanism

This change provides secure user authentication for the API.
Breaking change: API now requires authentication headers.

Relates to: JIRA-123
Nach dem Login kopieren

Ein echtes Beispiel mit Commit-Nachrichten:

Fix bug in user login validation

Previously, the validation logic for user logins did not correctly
check the email format, leading to acceptance of invalid emails.

This commit updates the regex to match only valid email formats.

Fixes #123
Nach dem Login kopieren

Überlegungen zur Zusammenführung

Bevor Sie mit dem Zusammenführungsprozess beginnen, sollten Sie diese Checkliste bereithalten

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

#6/8: Abhängigkeiten und Konfiguration verwalten

In jedem Projekt sind die Abhängigkeiten und die Konfigurationsdateien wichtige Faktoren, die dazu beitragen können, dass das Projekt sauber, gut skaliert und stabil bleibt. Nachfolgend verraten wir Tipps zum Umgang mit diesen Aspekten.

Versionskontrolle für Konfigurationsdateien

Konfigurationsdateien sind von grundlegender Bedeutung für die Definition des Verhaltens Ihrer Anwendung in verschiedenen Umgebungen. Durch die ordnungsgemäße Versionskontrolle dieser Dateien wird sichergestellt, dass Ihre Entwicklungs-, Test- und Produktionsumgebungen konsistent und reproduzierbar sind.

  • Umgebungsdatei (.env):

Diese Dateien speichern Umgebungsvariablen, die Konfigurationseinstellungen definieren, die sich je nach Umgebung unterscheiden (z. B. Entwicklung, Test, Produktion). Es ist gängige Praxis, eine .env.example-Datei in Ihr Repository aufzunehmen, die alle erforderlichen Umgebungsvariablen ohne die tatsächlichen Werte auflistet. Dies dient Entwicklern als Vorlage zum Erstellen ihrer eigenen .env-Dateien.

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Konfiguration von Umgebungsdateien für mehrere Umgebungen

.env.development

Diese Datei wird während der Entwicklung verwendet und enthält Einstellungen, die für Ihre Entwicklungsumgebung spezifisch sind. Es wird normalerweise verwendet in

  • Lokale Entwicklungsserverkonfiguration
  • Entwicklungsspezifische API-Endpunkte
  • Debug-Flags aktiviert
  • Entwicklung von Datenbankverbindungen
  • Mock-Service-Endpunkte
  • Ausführliche Protokollierungseinstellungen
# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

.env.produktion

Dies enthält Einstellungen für Ihre Live-/Produktionsumgebung, in der echte Benutzer mit Ihrer Anwendung interagieren. Es wird häufig verwendet bei

  • Anmeldeinformationen für die Produktionsdatenbank
  • Live-API-Endpunkte
  • Einstellungen zur Leistungsoptimierung
  • Sicherheitskonfigurationen
  • Protokollierungseinstellungen für die Produktion
  • Echte Service-Integrationen
# Start new feature
git checkout -b feature/shopping-cart

# Make changes and commit regularly
git add src/cart.js
git commit -m "Add shopping cart base structure"

git add src/components/CartItem.jsx
git commit -m "Add cart item component"

# Push to remote and create PR
git push origin feature/shopping-cart

# After PR review, merge via GitHub UI
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

.env.test

Diese Datei wird während Testphasen verwendet, einschließlich Komponententests, Integrationstests und CI/CD-Pipelines, um Datenbankkonfigurationen, Scheindienstkonfigurationen, testspezifische API-Endpunkte, Testzeitüberschreitungen, Einstellungen für die Abdeckungsberichterstattung und CI/CD-spezifische Konfigurationen zu testen .

# After PR is merged to main
git checkout main
git pull origin main

# Deploy
npm run deploy

# If issues found
git checkout -b fix/cart-total
git add src/cart.js
git commit -m "Fix cart total calculation"
git push origin fix/cart-total
# Create PR for the fix
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

.env.local

Enthält persönliche Überschreibungen (die nicht der Versionskontrolle unterliegen) für Ihren lokalen Computer, die nicht mit anderen Entwicklern geteilt werden sollten. Dies wird normalerweise in persönlichen Entwicklungseinstellungen, lokalen maschinenspezifischen Pfaden, benutzerdefinierten Werkzeugkonfigurationen und persönlichen API-Schlüsseln angewendet und überschreibt alle Einstellungen aus anderen .env-Dateien

# Create short-lived branch
git checkout -b feature/add-to-cart-button

# Work fast (1-2 days max)
git add src/components/AddToCart.jsx
git commit -m "Add to cart button component"

# Regular integration to main
git checkout main
git pull origin main
git merge feature/add-to-cart-button
git push origin main
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hauptunterschiede und Verwendung von Umgebungsdateien

1. Prioritätsreihenfolge (normalerweise):

// Feature toggle implementation
const FEATURES = {
  NEW_CHECKOUT: process.env.ENABLE_NEW_CHECKOUT === 'true',
  DARK_MODE: process.env.ENABLE_DARK_MODE === 'true',
};

// Usage in code
if (FEATURES.NEW_CHECKOUT) {
  return <NewCheckoutProcess />;
} else {
  return <LegacyCheckout />;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Praktiken der Versionskontrolle:

feature/ticket-number-brief-description
feature/user-authentication
feature/JIRA-123-payment-gateway
Nach dem Login kopieren
Nach dem Login kopieren

3. Beispiel einer Verzeichnisstruktur:

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Best Practices bei der Verwendung von .env-Dateien

1. Sicherheit: Übergeben Sie niemals vertrauliche Anmeldeinformationen an die Versionskontrolle. Verwenden Sie für jede Umgebung unterschiedliche Anmeldeinformationen. Implementieren Sie geheime Rotationsrichtlinien. Dokumentieren Sie die erforderlichen Umgebungsvariablen.

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Dokumentation: Pflegen Sie eine .env.example-Datei mit Dummy-Werten einschließlich Kommentaren, um den Zweck jeder Variablen zu erläutern. Dokumentieren Sie alle Standardwerte oder Fallbacks.

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

3. Validierung:

# Start new feature
git checkout -b feature/shopping-cart

# Make changes and commit regularly
git add src/cart.js
git commit -m "Add shopping cart base structure"

git add src/components/CartItem.jsx
git commit -m "Add cart item component"

# Push to remote and create PR
git push origin feature/shopping-cart

# After PR review, merge via GitHub UI
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

4. Ladestrategie:

# After PR is merged to main
git checkout main
git pull origin main

# Deploy
npm run deploy

# If issues found
git checkout -b fix/cart-total
git add src/cart.js
git commit -m "Fix cart total calculation"
git push origin fix/cart-total
# Create PR for the fix
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Diese Trennung der Umgebungskonfigurationen trägt dazu bei, zu verhindern, dass ein Entwickler die meisten Entwicklungsumgebungen vermasselt, und bietet gleichzeitig den notwendigen Weg zum Ändern spezifischer Umgebungsparameter und individueller Präferenzen für Programmierumgebungen.

  • .gitignore:

Dies ist eine andere Art von Versionskontrollkonfigurationsdatei, die angibt, welche Dateien und Verzeichnisse Git ignorieren soll. Zu den häufig ignorierten Dateien gehören node_modules, Build-Verzeichnisse und umgebungsspezifische Dateien (.env). Indem Sie diese von der Versionskontrolle ausschließen, reduzieren Sie die Unordnung in Ihrem Repository und verhindern, dass vertrauliche Informationen versehentlich übernommen werden.

Beispiel .gitignore:

# Create short-lived branch
git checkout -b feature/add-to-cart-button

# Work fast (1-2 days max)
git add src/components/AddToCart.jsx
git commit -m "Add to cart button component"

# Regular integration to main
git checkout main
git pull origin main
git merge feature/add-to-cart-button
git push origin main
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wichtige Überlegungen

Bei der Arbeit an der .gitignore-Datei eines Projekts müssen mehrere Dinge berücksichtigt werden. Zunächst sollte die Liste in der .gitignore-Datei spezifische Ignorierungen für das Projekt enthalten, einschließlich Sprachmustern wie .pyc und .class, Framework-Verzeichnissen und Build-Artefakten. Auf diese Weise werden nur die Dateien, die tatsächlich unter Versionskontrolle stehen sollten, unter Versionskontrolle gestellt.

Über die projektspezifischen Ignoranzen hinaus gäbe es auch globale Ignoranzen, die ebenfalls berücksichtigt werden müssen. Dies sind die benutzerspezifischen Einstellungen, die in der Datei ~/.gitignore_global abgelegt werden sollten. Zu den häufigsten gehören IDE-Konfigurationsdateien und vom Betriebssystem erstellte Dateien, die den Versionskontrollverlauf überladen können, wenn sie in das System integriert werden.

Es ist eine kontinuierliche Aufgabe, die .gitignore-Datei zu verwalten und zu aktualisieren. Es wird jedoch empfohlen, dass die Datei regelmäßig von den Entwicklern überarbeitet wird, um sicherzustellen, dass sie weiterhin den Anforderungen des Projekts entspricht. Es ist sehr zu empfehlen, dass alles Merkwürdige oder Eigenartige, das man ignorieren möchte, auch in der .gitignore-Datei dokumentiert wird, da auf diese Weise jedes andere Mitglied des Teams in der Lage ist zu verstehen, warum diese besonderen Ignorierungen als notwendig erachtet wurden . Last but not least: Wenn es leere Verzeichnisse gibt, die Ihr Versionskontrollsystem verfolgen soll, können Sie zu diesem Zweck .gitkeep-Dateien verwenden.

Umgang mit Abhängigkeiten

Abhängigkeiten sind externe Bibliotheken und Module, auf die Ihr Projekt angewiesen ist. Die korrekte Verwaltung dieser Abhängigkeiten ist für die Aufrechterhaltung einer stabilen und sicheren Anwendung von entscheidender Bedeutung.

package.json:

Diese Datei listet alle Abhängigkeiten auf, die Ihr Projekt benötigt. Es enthält Metadaten zu Ihrem Projekt, z. B. Name, Version und Skripte. Aktualisieren Sie diese Datei regelmäßig, um den aktuellen Status der Abhängigkeiten Ihres Projekts widerzuspiegeln.

Ein typisches Beispiel einer package.json-Datei, das eine gut strukturierte und an Best Practices ausgerichtete Konfiguration für ein typisches JavaScript/Node.js-Projekt demonstriert.

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Struktur der Beispieldatei package.json umfasst die folgenden Schlüsselabschnitte:

  • Name und Version: Definiert den Namen und die aktuelle Version des Projekts.
  • Abhängigkeiten: Listet die für das Projekt erforderlichen Produktionsabhängigkeiten zusammen mit ihren Versionseinschränkungen auf.
  • devDependencies: Listet die Entwicklungsabhängigkeiten auf, die für Aufgaben wie Tests, Linting usw. erforderlich sind.
  • peerDependencies: Deklariert Abhängigkeiten, die für das Projekt erforderlich sind, aber voraussichtlich von der verbrauchenden Anwendung bereitgestellt werden.
  • Skripte: Definiert verschiedene Befehlszeilenskripte, die ausgeführt werden können, z. B. das Starten des Servers, das Ausführen von Tests oder das Flusen der Codebasis.

Zu den Best Practices für die Verwaltung einer package.json-Datei gehören:

  • Versionsspezifikation
    • Verwenden Sie genaue Versionen („express“: „4.17.1“) für kritische Abhängigkeiten, um Stabilität sicherzustellen
    • Verwenden Sie Caret-Bereiche („^4.17.1“) für flexible Updates auf Neben- und Patchversionen
    • Verwenden Sie Tilde-Bereiche („~4.17.1“) nur für Updates auf Patch-Ebene
  • Skriptorganisation
    • Gruppieren Sie verwandte Skripte zur besseren Organisation.
    • Verwenden Sie einheitliche Namenskonventionen für die Skriptbefehle.
    • Dokumentieren Sie alle komplexen oder nicht offensichtlichen Skripte.

Yarn.lock / package-lock.json:

Normalerweise sperren diese Dateien die Versionen der Abhängigkeiten, die Ihr Projekt verwendet. Es stellt sicher, dass dieselben Versionen in verschiedenen Umgebungen installiert werden, anstatt dass das Problem auftritt, dass es auf meinem Computer funktioniert. Diese Sperrdateien sollten ebenfalls festgeschrieben werden, damit es eine Versionskontrolle im System gibt.

Der Zweck dieser Dateien besteht darin, konsistente Installationen zu erreichen, genaue Versionsnummern und Abhängigkeiten zu sperren und Probleme des Typs „Es funktioniert auf meinem Computer“ zu beseitigen. Die Aktualisierung dieser Sperrdateien erfordert das Einchecken der Sperrdateien in das Versionskontrollsystem, die Prüfung von Änderungen während der Aktualisierungen und die angemessene Behandlung von Konflikten.

Best Practices, um Abhängigkeiten auf dem neuesten Stand zu halten

1. Regelmäßige Updates: Aktualisieren Sie Ihre Abhängigkeiten regelmäßig, um von den neuesten Funktionen, Verbesserungen und Sicherheitspatches zu profitieren. Verwenden Sie Befehle wie „npm outdated“ oder „garn outdated“, um nach Updates zu suchen.

2. Semantische Versionierung: Achten Sie beim Aktualisieren von Abhängigkeiten auf die semantische Versionierung (Semver). Semver verwendet ein Versionierungsschema im Format MAJOR.MINOR.PATCH. Update:

  • Patch-Versionen (x.x.1 bis x.x.2) für abwärtskompatible Fehlerbehebungen.
  • Nebenversionen (x.1.x bis x.2.x) für abwärtskompatible neue Funktionen.
  • Hauptversionen (1.x.x bis 2.x.x) für Änderungen, die die Kompatibilität beeinträchtigen könnten.

3. Automatisierte Tools: Verwenden Sie automatisierte Tools wie Dependabot (für GitHub) oder Renovate, um automatisch nach Abhängigkeitsaktualisierungen zu suchen und Pull-Anfragen zu erstellen. Diese Tools helfen dabei, Ihre Abhängigkeiten ohne manuelles Eingreifen auf dem neuesten Stand zu halten.

4. Testen: Bevor Sie Abhängigkeiten aktualisieren, stellen Sie sicher, dass Sie über eine robuste Testsuite verfügen, um sicherzustellen, dass Aktualisierungen keine Regressionen einführen. Führen Sie nach dem Update alle Tests durch, um sicherzustellen, dass alles wie erwartet funktioniert.

5. Peer-Abhängigkeiten: Beachten Sie die von einigen Paketen angegebenen Peer-Abhängigkeiten. Stellen Sie sicher, dass diese mit den in Ihrem Projekt verwendeten Versionen kompatibel sind.

Durch die Befolgung dieser Praktiken sorgen Sie für ein gesundes, konsistentes und sicheres React-Projekt und stellen sicher, dass alle Teammitglieder und Umgebungen auf dem gleichen Stand sind.

#7/8: Kontinuierliche Integration und Bereitstellung (CI/CD)

Die Integration von CI/CD mit Versionskontrollsystemen ermöglicht eine nahtlose Automatisierung der Build-, Test- und Bereitstellungsprozesse. Immer wenn Code in das Versionskontroll-Repository übertragen wird, wird die CI/CD-Pipeline automatisch ausgelöst und führt vordefinierte Schritte aus, um die Änderungen zu validieren und bereitzustellen. Wenn ein Entwickler beispielsweise einen neuen Commit an den Hauptzweig eines GitHub-Repositorys überträgt, wird ein GitHub-Aktionsworkflow ausgelöst. Dieser Workflow kompiliert automatisch den Code, führt Unit- und Integrationstests aus und stellt die Anwendung für weitere Tests in einer Staging-Umgebung bereit.

Wichtige Schritte bei der Integration von CI/CD mit Versionskontrolle:

  • Automatisierte Builds: Jeder Code-Push löst einen automatisierten Build-Prozess aus, der sicherstellt, dass sich die Codebasis immer in einem erbaubaren Zustand befindet.
  • Automatisierte Tests: Tests werden automatisch bei jedem Push ausgeführt, um Fehler frühzeitig zu erkennen.
  • Kontinuierliche Bereitstellung: Änderungen, die alle Tests und Prüfungen bestehen, werden automatisch in Produktions- oder Staging-Umgebungen bereitgestellt.

Übersicht über beliebte CI/CD-Tools

Mehrere CI/CD-Tools werden häufig verwendet, um diese Praktiken umzusetzen, jedes mit seinen eigenen Stärken:

  • Jenkins: Ein Open-Source-Automatisierungsserver, der das Erstellen, Bereitstellen und Automatisieren jedes Projekts unterstützt. Jenkins verfügt über ein großes Plugin-Ökosystem, wodurch es hochgradig anpassbar ist.

    • Vorteile: Umfangreiche Plugin-Bibliothek, hochgradig anpassbar, starke Community-Unterstützung.
    • Nachteile: Kann komplex in der Konfiguration und Wartung sein und erfordert dedizierte Serverressourcen.
  • GitHub-Aktionen: Direkt in GitHub integriert, ermöglicht es Entwicklern, Workflows basierend auf GitHub-Ereignissen (z. B. Push-, Pull-Anfrage) zu automatisieren.

    • Vorteile: Nahtlose Integration mit GitHub, einfach einzurichten, umfangreicher Aktionsmarktplatz.
    • Nachteile: Beschränkt auf GitHub-Repositories, kann die Preisgestaltung für große Teams oder komplexe Arbeitsabläufe zu einem Problem werden.
  • Travis CI: Ein cloudbasierter CI-Dienst, der sich gut in GitHub-Projekte integrieren lässt. Es ist für seine Einfachheit und Benutzerfreundlichkeit bekannt.

    • Vorteile: Einfache Konfiguration, einfache Integration mit GitHub, kostenlos für Open-Source-Projekte.
    • Nachteile:Eingeschränkte Unterstützung für Nicht-GitHub-Repositories, kann bei großen Projekten langsam sein.
  • CircleCI: Ein CI/CD-Tool, das das Erstellen, Testen und Bereitstellen von Anwendungen unterstützt. Es bietet eine robuste Konfiguration und Leistungsoptimierung.

    • Vorteile: Hohe Leistung, unterstützt Docker nativ, hervorragende Skalierbarkeit.
    • Nachteile: Die Konfiguration kann komplex sein, Premium-Funktionen können teuer sein.
  • GitLab CI/CD: Direkt in GitLab integriert und bietet ein vollständiges DevOps-Lifecycle-Management-Tool.

    • Vorteile: Vollständiger DevOps-Lebenszyklus-Support, integriert in GitLab, starke Sicherheitsfunktionen.
    • Nachteile: Die Einrichtung kann anfangs komplex sein, Premium-Funktionen können kostspielig sein.

Automatisierte Arbeitsabläufe einrichten

Das Konfigurieren einer CI/CD-Pipeline umfasst das Definieren der Abfolge von Schritten zum Erstellen, Testen und Bereitstellen der Anwendung. Dies erfolgt normalerweise über eine Konfigurationsdatei (z. B. jenkins-pipeline.groovy, .travis.yml, .github/workflows/main.yml), die neben dem Anwendungscode vorhanden ist.

Hier ist ein Beispiel für einen GitHub Actions-Workflow, der bei jedem Push an den Hauptzweig automatisierte Tests durchführt:

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Nachdem der GitHub Actions-Workflow die Testsuite erfolgreich ausgeführt hat, kann er die Anwendung auf einer Cloud-Hosting-Plattform wie AWS oder Azure bereitstellen. Dies erfolgt durch das Hinzufügen zusätzlicher Schritte zum Workflow, die die Authentifizierung beim Cloud-Anbieter und die Ausführung von Bereitstellungsbefehlen umfassen.

Best Practices für CI/CD-Pipelines

1. Halten Sie Pipelines effizient und effektiv: Stellen Sie sicher, dass Ihre CI/CD-Pipelines auf Geschwindigkeit und Zuverlässigkeit optimiert sind.

  • Cache-Abhängigkeiten:Verwenden Sie Caching-Mechanismen, um Build- und Testprozesse durch die Wiederverwendung von Abhängigkeiten zu beschleunigen.
  • Build-Schritte optimieren: Teilen Sie den Build-Prozess in kleinere, überschaubare Schritte auf, um die Komplexität zu reduzieren und die Fehlerbehebung zu verbessern.
  • Workflows parallelisieren:Führen Sie unabhängige Aufgaben parallel aus, um die Gesamtausführungszeit der Pipeline zu verkürzen.

2. Überwachen und warten Sie Pipelines:Überwachen Sie Ihre CI/CD-Pipelines regelmäßig auf Leistungsengpässe und warten Sie sie, um sicherzustellen, dass sie reibungslos funktionieren.

  • Protokollieren und Überwachen: Implementieren Sie Protokollierungs- und Überwachungstools, um die Leistung und den Zustand Ihrer Pipelines zu verfolgen.
  • Regelmäßige Audits: Führen Sie regelmäßige Audits Ihrer Pipelines durch, um Ineffizienzen zu identifizieren und zu beheben.

3. Best Practices für die Sicherheit: Integrieren Sie Sicherheitsprüfungen in Ihre CI/CD-Pipelines, um sicherzustellen, dass der Code sicher ist, bevor er in die Produktion gelangt.

  • Statische Analyse:Verwenden Sie statische Code-Analysetools, um Sicherheitslücken und Codequalitätsprobleme frühzeitig im Entwicklungsprozess zu erkennen.
  • Geheimnisverwaltung:Verwalten Sie vertrauliche Informationen wie API-Schlüssel und Anmeldeinformationen sicher und stellen Sie sicher, dass sie nicht in der Codebasis oder Protokollen offengelegt werden.

4. Kollaborative Arbeitsabläufe:Fördern Sie eine Kultur der Zusammenarbeit, indem Sie Teammitglieder in den CI/CD-Prozess einbeziehen.

  • Codeüberprüfungen: Stellen Sie sicher, dass alle Codeänderungen von Kollegen überprüft werden, bevor sie in den Hauptzweig übernommen werden.
  • Feedback-Schleife: Erstellen Sie eine Feedback-Schleife, in der Entwickler sofortiges Feedback von CI/CD-Pipelines erhalten und umgehend darauf reagieren können.

Durch Befolgen dieser Vorgehensweisen können Sie robuste und zuverlässige CI/CD-Pipelines erstellen, die den Softwarebereitstellungsprozess rationalisieren.

#8/8: Umgang mit Konflikten und Rollbacks

Zusammenführungskonflikte treten auf, wenn sich mehrere Änderungen an einem Projekt überschneiden, was zu Inkonsistenzen führt. Konflikte können dadurch verursacht werden, dass mehrere Entwickler dieselbe(n) Codezeile(n) oder Änderungen an umbenannten oder gelöschten Dateien oder durch unterschiedliche Verzweigungsverläufe ändern. Allerdings müssen diese Konflikte reibungslos gehandhabt werden, um die Integrität der Codebasis aufrechtzuerhalten.

Konfliktmarker:

# Start a new feature
git checkout develop
git pull origin develop
git checkout -b feature/payment-gateway

# Work on the feature
# Add Stripe integration code to payment.js
git add src/payment.js
git commit -m "Add Stripe payment integration"

# Add payment form
git add src/components/PaymentForm.jsx
git commit -m "Add payment form component"

# Add tests
git add tests/payment.test.js
git commit -m "Add payment integration tests"

# Ready to merge
git checkout develop
git pull origin develop
git merge feature/payment-gateway
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Best Practices zur Vermeidung und Lösung von Konflikten

1. Kommunizieren Sie häufig: Offene Kommunikationswege innerhalb des Teams können überlappende Arbeiten verhindern, die zu Konflikten führen.
2. Regelmäßig abrufen: Rufen Sie regelmäßig Änderungen aus dem Hauptzweig ab, um Ihren Zweig auf dem neuesten Stand zu halten und Unterschiede zu minimieren.
3. Kleine Commits:Kleinere, häufigere Commits erleichtern das Erkennen, wo Konflikte entstehen.
4. Automatisierte Tests: Führen Sie häufig automatisierte Tests durch, um Probleme frühzeitig zu erkennen.
5. Verwenden Sie Zweige mit Bedacht: Teilen Sie die Arbeit in Feature-Zweige auf und vermeiden Sie die Arbeit direkt am Hauptzweig.
6. Wählen Sie die richtige Strategie: Verwenden Sie „Zurücksetzen“ für öffentliche Zweige und „Zurücksetzen“ für lokale Änderungen.

Schritt-für-Schritt-Anleitungen zur Lösung von Konflikten

1. Konflikte identifizieren:

# Create release branch
git checkout -b release/1.0.0 develop

# Update version
npm version 1.0.0
git add package.json
git commit -m "Bump version to 1.0.0"

# Fix last-minute issues
git add src/bugfix.js
git commit -m "Fix payment validation bug"

# Merge to main and develop
git checkout main
git merge release/1.0.0 --no-ff
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main --tags

git checkout develop
git merge release/1.0.0 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Wählen Sie eine Lösungsstrategie: Bei der Auswahl einer Lösungsstrategie sollten Sie darauf achten, eingehende Änderungen zu akzeptieren und die aktuellen Änderungen zu dokumentieren. Kombinieren Sie beide Änderungen und erstellen Sie eine neue Lösung dafür.

3. Manuelle Lösung:

# Create hotfix branch
git checkout -b hotfix/1.0.1 main

# Fix the critical bug
git add src/payment.js
git commit -m "Fix payment processing timeout"

# Update version
npm version patch
git add package.json
git commit -m "Bump version to 1.0.1"

# Merge to main and develop
git checkout main
git merge hotfix/1.0.1 --no-ff
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags

git checkout develop
git merge hotfix/1.0.1 --no-ff
git push origin develop
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Rollback-Strategien

Manchmal geht trotz unserer besten Bemühungen etwas schief. Zu wissen, wie Änderungen sicher rückgängig gemacht werden können, ist einer der Faktoren, die Ihr Projekt stabil und in Ordnung halten.

Techniken zum sicheren Rückgängigmachen von Änderungen bei Bedarf

1. Commits zurücksetzen: Verwenden Sie Versionskontrolltools, um zu einem vorherigen Commit zurückzukehren. Diese Methode stört andere Entwickler nicht und ermöglicht es Ihnen, Änderungen rückgängig zu machen und gleichzeitig den Verlauf beizubehalten.

# Start new feature
git checkout -b feature/shopping-cart

# Make changes and commit regularly
git add src/cart.js
git commit -m "Add shopping cart base structure"

git add src/components/CartItem.jsx
git commit -m "Add cart item component"

# Push to remote and create PR
git push origin feature/shopping-cart

# After PR review, merge via GitHub UI
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Rücksetzvorgänge: Wenn eine Verzweigung erheblich voneinander abgewichen ist, kann das Zurücksetzen auf einen bekanntermaßen guten Zustand wirksam sein. Bei gemeinsam genutzten Zweigen mit Vorsicht verwenden.

# After PR is merged to main
git checkout main
git pull origin main

# Deploy
npm run deploy

# If issues found
git checkout -b fix/cart-total
git add src/cart.js
git commit -m "Fix cart total calculation"
git push origin fix/cart-total
# Create PR for the fix
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

3. Backups: Führen Sie immer Backups durch, bevor Sie wesentliche Änderungen vornehmen, um sicherzustellen, dass Sie über einen Wiederherstellungspunkt verfügen. Dies wird als Sofortmaßnahme für Notruf-Rollback-Anrufe verwendet

# Create short-lived branch
git checkout -b feature/add-to-cart-button

# Work fast (1-2 days max)
git add src/components/AddToCart.jsx
git commit -m "Add to cart button component"

# Regular integration to main
git checkout main
git pull origin main
git merge feature/add-to-cart-button
git push origin main
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

4. Verwenden von Reflog zur Wiederherstellung:

// Feature toggle implementation
const FEATURES = {
  NEW_CHECKOUT: process.env.ENABLE_NEW_CHECKOUT === 'true',
  DARK_MODE: process.env.ENABLE_DARK_MODE === 'true',
};

// Usage in code
if (FEATURES.NEW_CHECKOUT) {
  return <NewCheckoutProcess />;
} else {
  return <LegacyCheckout />;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5. Markieren Sie Veröffentlichungen: Markieren Sie stabile Versionen, damit Sie problemlos zu einem bekanntermaßen funktionierenden Zustand zurückkehren können.
6. Funktionsumschaltungen: Implementieren Sie Funktionsumschaltungen, um problematische Funktionen zu deaktivieren, ohne dass ein vollständiger Rollback erforderlich ist.

Durch die Befolgung dieser Praktiken und das Verständnis der verfügbaren Tools können Teams Konflikte effektiv verwalten und bei Bedarf Rollbacks durchführen. Denken Sie daran, dass Vorbeugen immer besser ist als Heilen, aber solide Rollback-Verfahren bieten ein Sicherheitsnetz für den Fall, dass Probleme auftreten.

Abschluss

Die Verwendung von Best Practices für die Versionskontrolle in React-Teams ist wichtig, damit alles reibungslos läuft und gut zusammenarbeitet. Um jedoch sicherzustellen, dass Sie in Ihrem Codierungsbereich keine Probleme haben, müssen Sie das richtige Versionskontrollsystem auswählen und gute Verzweigungsmethoden, klare Commit-Nachrichten und starke CI/CD-Systeme einrichten. Jeder Teil trägt dazu bei, die Stabilität und Qualität Ihrer Codebasis sicherzustellen.

Wir haben uns mit der Bedeutung der Verwendung von Git, der Konfiguration von Workflows mit Git Flow, GitHub Flow und Trunk-Based Development sowie den besten Möglichkeiten zur Verwaltung von Abhängigkeiten und Konfigurationsdateien befasst. Wir haben auch darüber gesprochen, wie man mit Konflikten und Rollbacks umgeht, den Wert von Codeüberprüfungen und Pull-Requests sowie die Notwendigkeit einer gründlichen Dokumentation und einer guten Kommunikation.

Durch die Befolgung dieser Best Practices können React-Teams besser zusammenarbeiten, um die Codequalität zu verbessern und den Entwicklungsprozess reibungsloser zu gestalten, was zu erfolgreicheren Projektergebnissen führen könnte. Ganz gleich, auf welchem ​​Entwicklerniveau Sie sich befinden, ob Sie erfahren sind oder gerade erst mit React beginnen, diese Tipps helfen Ihnen bei der Verwaltung der Versionskontrolle und der Schaffung einer einheitlicheren und effektiveren Entwicklungsumgebung.

Codieren Sie weiter! ?

Best Version Control Practices Every React Development Team Needs To Know

Das obige ist der detaillierte Inhalt vonDie besten Methoden zur Versionskontrolle, die jedes React-Entwicklungsteam kennen muss. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage