
Andrew Hanna

Andrew Hanna

Kurz gesagt: Committen Sie jeden Flow als eine einzige
.flow-meta.xml-Datei ohne Versionsnummer, geben Sie jedem Flow pro
Änderung genau einen Owner und verbieten Sie Git, Flow-XML automatisch zu mergen.
Ändern zwei Branches trotzdem denselben Flow, behalten Sie eine Seite und bauen die
andere Änderung in Flow Builder nach, statt XML von Hand zu bearbeiten. Die meisten
Merge-Schmerzen bei Flows entstehen durch parallele Bearbeitung und Layout-Rauschen,
nicht durch Git.
Ein Flow ist kein Code, den Sie Zeile für Zeile schreiben. Er ist XML, das Flow Builder erzeugt, und darin stecken einige Fallen:
locationX- und locationY-Koordinaten, sodass das
Verschieben eines Kastens einen Diff ohne jede Logikänderung erzeugt. Wechselt ein
Flow zwischen Free-Form und Auto-Layout, werden die Positionen aller Elemente neu
geschrieben.
force-app/main/default/flows/, benannt nach dem API-Namen des Flows
ohne Versionssuffix.
status-Feld am Flow selbst, ob er aktiv ist, und Salesforce
empfiehlt Flow Definitions für die Aktivierung nicht mehr.
sf project retrieve start --metadata Flow:Case_Escalation.
Prüfen Sie den status-Wert vor dem Commit, damit nie versehentlich ein
Entwurf ausgeliefert wird.
force-app/**/flows/*.flow-meta.xml -merge in
.gitattributes ein. Laut
gitattributes-Dokumentation
behält ein deaktiviertes merge die Version Ihres Branches und meldet
einen Konflikt. Verzichten Sie hier auf die Abkürzung binary, denn sie
schaltet auch Diffs ab, und Flow-Änderungen wollen Sie weiterhin reviewen.
Der letzte Schritt ist der wichtigste. Ein zeilenbasierter Merge kann Flow-XML erzeugen, das vollkommen gültig und trotzdem logisch falsch ist, etwa ein Konnektor, der auf ein Element zeigt, das der andere Branch gelöscht hat. Ein erzwungener Konflikt ist billiger als ein stiller. Deshalb hält auch unser Leitfaden für einen Salesforce-fähigen Git-Merge-Driver Flows aus den Mustern des Drivers heraus: Profile und Permission Sets lassen sich gut pro Knoten mergen, Flow-Logik nicht.
git checkout --ours oder --theirs auf der Flow-Datei.
Für Konflikte in anderen Metadatentypen lesen Sie wie Sie Salesforce-Metadatenkonflikte während eines Merges lösen.
Deployen Sie Flows noch mit Change Sets? Beginnen Sie mit dem Umstieg von Change Sets auf Source Control und wenden Sie danach die Schritte oben an.
DevOps-Plattformen wie Gearset und Flosum ergänzen Git um Flow-fähigen Vergleich und Deployment, und Lifecycle Center von Salesforce (früher DevOps Center) liefert über seine MCP-Tools KI-Empfehlungen zur Konfliktlösung. Serpent löst Konflikte direkt im Pull Request: Serpent AI schlägt eine Lösung vor und wartet auf Ihr Review, bevor sie angewendet wird, und KI-Code-Review ist in jedem Tarif enthalten. Serpent-Tarife ansehen oder weitere Salesforce-DevOps-Leitfäden durchstöbern.
Sollte ich FlowDefinition-Dateien committen?
Nein. Seit Metadata API v44 steuert das eigene status-Feld des Flows die
Aktivierung, und Salesforce empfiehlt Flow Definitions dafür nicht mehr.
Kann Git zwei Versionen desselben Flows automatisch mergen?
Es kann einen textlich sauberen Merge erzeugen, aber Git versteht keine Flow-Logik.
Erzwingen Sie mit -merge einen Konflikt und bauen Sie eine der Änderungen
in Flow Builder nach.
Warum ist ein Flow-Entwurf in meinem Repository gelandet?
Ein Retrieve liefert die neueste Version des Flows, aktiv oder Entwurf. Prüfen Sie den
status-Wert vor dem Commit.
Spielen Änderungen an locationX und locationY eine Rolle?
Sie ändern nur das Layout, nicht das Verhalten. Behandeln Sie sie im Review als Rauschen und wechseln Sie nicht den Canvas-Modus, dann bleiben sie stabil.
Unverbindlich.