Hier dokumentiere ich verschiedene Szenarien, in Zusammenarbeit mit Martin und ganz allgemein wie man mit merge und verschiedenen Branches umgehen muss.
Namenskonventionen
Bekannte Benennungen für Branches sind. Kleinschreibung mit - bevorzugt, aber nicht zwingend.
feature/* neue Funktion / Erweiterung
fix/* normaler Bugfix
hotfix/* dringender Fix für bereits produktiven Code
chore/* technische Wartung / Aufräumarbeiten
Beispiele:
------------------------------------------------------------
feature/responsive-image
feature/new-contact-form
fix/image-spacing
fix/mobile-navigation
hotfix/security-update
hotfix/critical-login-error
chore/update-dependencies
chore/cleanup-cssEinen Feature-Branch in main mergen und Feature-Branch aktiv halten.
Folgender Fall: Der Branch feature/responsive ist noch in Arbeit, aber ich habe auf main z.B. eine wichtige CSS Änderung gemacht, die man auf dem feature/responsive Branch auch sehen sollte. Dazu merge ich main mit dieser kleinen Korrrektur in feature/responsive.
Findet alles auf local statt, aktuell im Branch feature/responsive
- beide Branches auf aktuellen Stand prüfen
- git switch main oder feature/responsive
- git fetch > git status
wenn beide ok, weiter, sonst die aktuellen Stände von remote mit git pull laden
feature/responsive Branch in main mergen
- git switch feature/responisve
- git merge main
der Merge-Commit wird in vi angezeigt, mit :wq bestätigen - git status
prüfen - git push
feature-Branch nach GitLab pushen
Neu gemergten feature/responsive auf dev und stage schieben
- git fetch
- git diff HEAD..origin/feature/responsive --stat
damit werden die geänderten Dateien inkl. Zeilenänderung angezeigt: z.B.
Wenn das die zu erwartenden Dateien sind weiter, sonst ev. detaillierter prüfen.public/web/themes/custom/modestia/css/styles.css | 9 +++++---- public/web/themes/custom/modestia/scss/styles.scss | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-)
- git pull
Weiterarbeiten
Wenn feature noch nicht fertig ist, kann dort nun mit der CSS Korrektur aus mein weiter gearbeitet werden.
Erledigten Feature-Branch final in main mergen und löschen
Finale merges von erledigten Arbeiten erledigen wir immer auf gitlab direkt.
- Projekt aufrufen
- Oben den «Create merge request» Button klicken
Wir springen auf die Seite «New merge request» - Ganz oben steht «From
feature/responsive-imageintomain» - Titel: Ist nicht so wichtig, würde hier einfach einen für mich klaren Titel wählen
- Mark as draft: Aus. Draft bedeutet: «Ich arbeite noch daran. Dieser Merge Request ist noch nicht zur Übernahme bereit.» Gitlab verhindert bzw. kennzeichnet damit den normalen Merge-Prozess
- Assignee, Reviewer, Milestone... brauchen wir nicht. Ist für Kontrollprozesse, in grösseren Teams.
- Merge options:
- Delete source ... : An
- Squash commits ...: Aus Würde die untenstehenden Commits zu einem zusammenführen. Kann bei vielen kleinen Commits Sinn machen, bei uns wohl in der Regel auch unwichtig.
- Create merge request > Klicken > bringt uns auf die nächste Seite
- Im zweiten Block steht «Ready to merge!» und die bereits auf der vorherigen Seite eingestellten Checkboxen. Lassen wir natürlich wie es hier ist.
- Der Ausführen-Button steht auf «Set to auto-merge». Das wollen wir nicht. Automerge ist abhängig von den verschiedenen Checks.
- Ausführen Button auf Merge immediatly. Dann wird der Merge sofort ausgeführt.
- Im oberen Block wird angezeigt, was gemacht wurde.
- Bsp: Merge details
- Changes merged into main with 8285284a.
- Deleted the source branch.
- Damit ist der merge auf gitlab abgeschlossen und wir haben ein sauberes main Repository mit den responsive Bildern implementiert.
Alle Umbegungen updaten und gelöschte Branches auch lokal entfernen
Die lokal erstellten Branches bleiben bestehen, auch wenn auch gitlab beim merge gesagt wurde dass der nicht mehr benötigte Branch gelöscht werden soll. Auf gitlab ist er weg, die lokalen Branches bleiben aber bestehen.
- git status > nur kurz prüfen
- git branch > auch schnell checken ob noch andere branches aktiv sind
- git switch main > zurück auf main wechseln
- git fetch > prüfen wie der aktuelle Stand auf remote ist, wenn ok, >
- git pull
- composer install (einfach zur Sicherheit, dass hier nicht mal was vergessen geht)
- drush cim
- drush cr
Damit ist diese Umgebung auf main und alles sauber.
Jetzt löschen wir noch die unnötigen Branches
- git branch > alle Branches anzeigen
- git branch -d <branchename> Branch löschen