Workflow der Kollaboration: Git, GitHub, Pull Requests, ...
Branches
- main: Der
main-Branch ist die Hauptentwicklungslinie. Er enthält den aktuellen Stand der Entwicklung und sollte immer lauffähig sein. - development: Der
development-Branch enthält den aktuellen Stand der Entwicklung, der noch nicht in die Produktion übernommen wurde. - staging: Der
staging-Branch enthält den aktuellen Stand der Entwicklung, der in der Testumgebung getestet wird. - production: Der
production-Branch enthält eube stabile Version der Codebase, die aktuell in der Produktion läuft.
Workflow bei der Entwicklung eines neuen Features
- Branch erstellen: Erstellen eines neuen Branches von
developmentfür das Feature, das entwickelt werden soll. Bitte JIRA-Ticketnummer und eine kurze Beschreibung des Features im Branchnamen verwenden, z.B.HER-232-Feature-Name. Befehl:git checkout -b HER-232-Feature-Name - Feature entwickeln: Entwickeln und Testen des neuen Features im Branch. Bitte beachten:
- Regelmäßig committen: Committen der Änderungen in den Branch mit einer aussagekräftigen Commit-Message.
- Präfix für Commit-Message: JIRA-Ticketnummer
- Bei Fehlern oder belanglosen Änderungen kann auch git amend verwendet werden. Befehl:
git commit --amend -m "HER-232: Beschreibung des Commits". Befehl:git commit -m "HER-232: Beschreibung des Commits"
- Development-Branch aktualisieren, wenn der Maintainer (= Blumi) darauf hinweist: Regelmäßiges Pullen des
development-Branches und Merge der Änderungen in euren Feature-Branch. Befehl:git pull origin developmentundgit merge development
- Regelmäßig committen: Committen der Änderungen in den Branch mit einer aussagekräftigen Commit-Message.
- Feature testen: Testen des Features in der lokalen Entwicklungsumgebung. Oberflächlichen Feauture-Test schreiben.
- (Refactoring): Falls nötig, Refactoring des Codes durchführen.
- Feature-Branch pushen: Pushen des Feature-Branches in das Remote-Repository. Befehl:
git push origin HER-232-Feature-Name - (Dokumentation): Falls es ein Feature ist, auf dem weitere Features aufbauen: Dokumentation des Features in den Docs.
- Pull Request erstellen: Erstellen eines Pull Requests von eurem Feature-Branch in den
development-Branch. Ohne Pull-Request kann der Code nicht in die Codebase übernommen werden. - Code Review: Der Code wird von einem anderen Entwickler geprüft. Der Reviewer gibt Feedback und der Entwickler passt den Code entsprechend an.
- Merge des Pull Requests: Der Pull Request wird in
developmentgemerged. Der Feature-Branch wird von mir gelöscht. - Aufruf zum Pullen: Alle werden aufgefordert, den
development-Branch zu pullen und die aktuellen Änderungen zu mergen.
Workflow bei einem Bugfix
- JIRA-Ticket erstellen: Erstellen eines JIRA-Tickets für den Bugfix.
- Branch erstellen: Erstellen eines neuen Branches von
developmentfür den Bugfix. Bitte JIRA-Ticketnummer und eine kurze Beschreibung des Bugfixes im Branchnamen verwenden, z.B.HER-232-Bugfix-Name. Befehl:git checkout -b HER-232-Bugfix-Name - Bugfix entwickeln: Best Practice: Wegwerf-Tests schreiben, in denen der Bug reproduziert wird. Wenn Test grün, dann ist der Bug behoben. Andernfalls: Manuelle Tests durchführen.
- Bugfix-Branch pushen + Pull Request erstellen: Wie bei einem Feature-Branch.
- Auf Aufruf zum Pullen warten: Der Bugfix wird in
developmentgemerged. Der Bugfix-Branch wird von mir gelöscht.
Workflow, wenn der development-Branch aktualisiert wurde
- Pullen des development-Branches: Pullen des
development-Branches und Merge der Änderungen in euren Feature-Branch. Befehl:git pull origin developmentundgit merge development - Merge-Konflikte lösen: Falls Merge-Konflikte auftreten, diese manuell lösen. Achtung: Übernehmt die Änderungen aus dem
development-Branch nur dann, wenn sie nicht eure Änderungen eurer aktuellen Entwicklung überschreiben. - Testen: Testen, ob euer Code noch funktioniert. Falls euer Code nicht mehr funktioniert: (A) Eigenen Code an die neuen Änderungen des
development-Branches anpassen. (B) Falls das nicht möglich ist, bitte mich informieren.
Troubleshooting
Möglicherweise kann nach dem Merge eines anderen Branches der PHP-Server oder der Vite Dev-Server nicht gestartet werden, weil neue Packages verlangt werden oder veraltete Packages aus dem Cache geladen werden.
Hier sind einige Schritte, die bei der Fehlerbehandlung helfen können:
- Git-Submodules aktualisieren: Befehl:
git submodule update --init --recursive - PHP-Server neu starten (
php artisan serveoder der entsprechenden Umgebung wie Herd, Laragon, etc.) - Vite-Dev-Server neu starten (
npm run dev): Werden Frontend-Fehlermeldungen ausgegeben? - Caches leeren: Befehl:
php artisan cache:clearundphp artisan route:clearundphp artisan view:clear. php artisan optimizeausführen: Werden Fehlermeldungen ausgegeben? Diese können beim Debuggen helfen.composer dump-autoloadausführen: Dadurch werden die Autoload-Dateien für PHP-Klassen neu erstellt.composer installausführen: Dadurch werden alle in dercomposer.jsonangegebenen PHP-Pakete (neu) installiert. Danach müsste automatisch auchcomposer dump-autoloadausgeführt werden.npm installausführen: Dadurch werden alle in derpackage.jsonangegebenen Frontend-Pakete (neu)installiert.
Folgendes kann überprüft werden, falls es immer noch nicht funktioniert:
- Wird von der neuen App-Version eine ENV-Variable benutzt, die nicht in der
.env-Datei hinterlegt ist? In diesem Fall Kontakt mit anderen Entwicklern aufnehmen. - Ist der Merge wirklich abgeschlossen?
- Status überprüfen:
git status - Falls alles zu kompliziert wird und man nochmal von vorne beinnen möchte:
git merge --abort: Bringt Repository zurück in den alten Zustand vor dem Merge. - Merge wurde durchgeführt, aber Konflikte wurden falsch gelöst und man möchte ddas Merge rückgängig machen:
git reset --hard ORIG_HEAD: Setzt die Repository auf den Zustand vor dem Merge zurück; lokale Änderungen nach dem Merge werden verworfen. - Falls gar nichts mehr geht und man zu einem bestimmten Commit zurückspringen möchte:
git reset --hard [commit-id]´:[commit-id]` ist der Hash des Commits, zu dem man zurückspringen will. ACHTUNG: Alle Commits und Änderungen nach dem gewünschten Commit werden gelöscht!
- Status überprüfen: